Documentation
Real Fake Data API Reference
A small, predictable REST API for realistic, valid synthetic test data across 27 EU countries — national IDs, IBANs, VAT numbers and more that pass real checksum validation. Deterministic when you need it, random when you do not.
Getting started
Quickstart
Every endpoint is a plain HTTPS GET request that returns a JSON envelope with a data record and a meta block. The example below fetches a single person name drawn from across the 27 EU countries — with no seed, so each call returns a fresh random record. Add a seed when you want the same record back every time, for stable test fixtures.
curl https://api.real-fake-data.com/v1/person-nameGetting started
Authentication
You don't need to authenticate to get started. The free tier is open — call any endpoint without an API key and IP-based rate limits apply. When you need higher limits or a private quota that isn't shared across an IP, add your API key in the Authorization header as a Bearer token. You can create and rotate keys from your dashboard.
Authorization: Bearer rfd_live_3f9a••••••2c71Keep your secret keys server-side. Never embed a live key in client-side code or commit it to version control.
Getting started
The response envelope
Every generator endpoint returns the same outer shape: your record under `data`, and reproducibility metadata under `meta`. The per-endpoint reference below documents only the `data` fields — the envelope around them never changes, so read it once here.
{
"data": { /* the generated record — shape varies by endpoint */ },
"meta": {
"seed": 7421,
"generatorId": "any.person-name"
}
}dataholds the record you asked for. Its fields are endpoint-specific and are listed in that endpoint’s reference below.meta.seedis the seed that produced this record. Pass it back as ?seed= to get the exact same record again — deterministic replay is a core feature, ideal for stable test fixtures.meta.generatorIdidentifies which generator produced the record.meta is additivesome endpoints add their own keys (for example sex on person endpoints, or format on formatted identifiers). Treat unknown meta keys as safe to ignore — new ones may appear without warning, so don’t write code that breaks when they do.
Request more than one record with ?count=N and the shape adjusts predictably: data becomes an array of records and meta gains a count. Everything else about the envelope is unchanged.
Reference
Errors & rate limits
Errors
A failed request returns a non-2xx status and a structured body. The error.code is a stable, machine-readable string you can branch on; error.message is a human-readable explanation, and error.details — present on validation failures — pinpoints the offending parameter.
{
"error": {
"code": "VALIDATION_ERROR",
"message": "Invalid query parameters",
"details": [
{ "path": "count", "message": "must be at most 10 on the free plan" }
]
}
}The Playwright addon surfaces these as a RealFakeDataError with status, code, details, so you can assert on them in tests.
| Status | Code | Meaning |
|---|---|---|
| 400 | VALIDATION_ERROR | A query parameter was malformed or out of range. details lists each bad parameter. |
| 401 | UNAUTHORIZED | The API key is missing, unknown, or expired. |
| 403 | FORBIDDEN | The request is valid but your plan does not allow it — e.g. edge, extreme or a custom pattern on the free plan, or count above your plan’s cap. |
| 404 | GENERATOR_NOT_FOUND | No generator or endpoint matches that path. |
| 429 | RATE_LIMITED | You exceeded the per-minute request limit. Retry after the window resets — see below. |
| 429 | QUOTA_EXCEEDED | You exhausted your plan’s monthly request quota. |
| 500 | INTERNAL_ERROR | An unexpected server error. Safe to retry. |
Rate limits
- Free (no key): metered per IP at 60 requests/minute and 2,000 requests/month.
- Pro (API key): 600 requests/minute and 200,000 requests/month.
- Enterprise: self-hosted on your own infrastructure — no metering.
Every metered response carries the current rate window in its headers, and a 429 response adds Retry-After (seconds until the window resets):
RateLimit-Limit: <requests allowed per minute>
RateLimit-Remaining: <requests left in this minute>
RateLimit-Reset: <unix epoch seconds when the window resets>
Retry-After: <seconds to wait — on 429 responses only>Read RateLimit-Remaining to pace yourself before you hit the limit; on a 429, wait Retry-After seconds and retry. Enterprise (self-hosted) responses are unmetered and carry no rate headers.
API reference
GET /v1/generators
Query parameters
This endpoint takes no parameters.
Request
curl https://api.real-fake-data.com/v1/generatorsResponse fields
| Field | Type | Description |
|---|---|---|
| generators | object[] |
Example response
{
"generators": [
{
"id": "any.person-name",
"description": "Random realistic person name drawn from one or more EU countries",
"supportedLocales": []
},
{
"id": "pl.pesel",
"description": "Random valid Polish PESEL (national identification number)",
"supportedLocales": ["pl-PL"]
}
// …217 generators in total
]
}API reference
GET /v1/health
Query parameters
This endpoint takes no parameters.
Request
curl https://api.real-fake-data.com/v1/healthResponse fields
| Field | Type | Description |
|---|---|---|
| status | "ok" | |
| version | string | |
| uptime | number | Process uptime in seconds. |
Example response
{
"status": "ok",
"version": "0.0.0",
"uptime": 3812.47
}API reference
GET /v1/sequence
Try on playgroundReturns an auto-increment integer — the classic SQL primary key. A single request returns `start` (default 1); a batch (`count`) returns the run `start, start + step, start + 2·step, …` (default `step` 1). Deterministic by construction — the output depends only on `start`, `step`, and position, not on the seed.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge cases from the rare corners of the domain. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| start | integer | First value of the sequence. Default 1. |
| step | integer | Increment between consecutive records. Default 1; must be non-zero. |
Request
curl https://api.real-fake-data.com/v1/sequenceResponse fields
| Field | Type | Description |
|---|---|---|
| value | integer | The sequence value: `start + index · step`. |
API reference
GET /v1/company-name
Try on playgroundReturns a realistic synthetic company name drawn from a mix of EU countries. Pass `countries` as a comma-separated list of ISO codes (`?countries=pl,de,it`) and each record is generated by one of them, picked at random — so a batch can mix Polish, German, and Italian firm names, each with its own legal form. Omit `countries` for all 27. Each record reports its `country`. `strategy` and `edge` work as on the per-country endpoints.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| countries | "at" | "be" | "bg" | "cy" | "cz" | "de" | "dk" | "ee" | "es" | "fi" | "fr" | "gr" | "hr" | "hu" | "ie" | "it" | "lt" | "lu" | "lv" | "mt" | "nl" | "pl" | "pt" | "ro" | "se" | "si" | "sk"[] | Comma-separated ISO 3166 country codes to draw from, e.g. `pl,de,it`. Omit for all 27. |
| edge | boolean | Restrict output to edge-case names (punctuation-heavy families, long/rare forms). |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family. Omit for a weighted-random one per country. |
Request
curl https://api.real-fake-data.com/v1/company-nameResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full company name, including any legal form. |
| legalForm | string | The appended legal form, or `null` when none. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Which naming family produced the name. |
| country | string | ISO 3166 alpha-2 code of the country this name was drawn from. |
API reference
GET /v1/enum
Try on playgroundReturns a random member drawn from a user-supplied weighted enumeration — a JSON map of `member → relative weight` in the `choices` param. Weights need not sum to 1; they are normalized by their total, so `{"a":1,"b":4}` and `{"a":0.2,"b":0.8}` are the same distribution. `choices` must be sent as URL-encoded JSON. An empty map, or weights that are all zero, negative, or non-finite, is a 400. `edge=true` inverts the distribution (Pro), `extreme=true` returns a hostile-encoded value (Pro), and `invalid=true` returns a value not in `choices` with probability 0.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| choices | string | URL-encoded JSON — either a map of member → relative weight, e.g. {"gold":1,"silver":4,"bronze":15}, or a bare array of members for an equal distribution, e.g. ["gold","silver","bronze"]. Weighted values are normalized by their sum. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Invert the distribution: the least-probable member becomes the most likely (a zero-weight member rises to the top). Requires the Pro plan or above. |
| extreme | boolean | Return the drawn member wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, bidi/combining marks, or homoglyphs). Requires the Pro plan or above. |
| invalid | boolean | Return a value that is NOT in `choices` — a random token, with probability 0 — for exercising unexpected-value handling. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/enumResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The drawn enum member. |
| probability | number | The member's weight normalized by the sum of all weights. |
API reference
GET /v1/object
Try on playgroundReturns a random object drawn from a user-supplied weighted list — a JSON array of `{ object, weight }` candidates in the `choices` param — returned verbatim. The object counterpart to `/v1/enum`. Weights need not sum to 1; they are normalized by their total. `choices` must be sent as URL-encoded JSON. An empty list, weights that are all zero / negative / non-finite, or a candidate whose serialized JSON is over-large, is a 400. `edge=true` inverts the distribution (Pro), `extreme=true` returns a hostile-encoded value (Pro), and `invalid=true` returns a sentinel object not among `choices` with probability 0.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| choices | string | URL-encoded JSON — either a weighted list [{"object":{"tier":"gold"},"weight":3},…] or a bare array of candidates [{"tier":"gold"},{"tier":"free"}] for an equal distribution. Weighted values are normalized by their sum. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Invert the distribution: the least-probable candidate becomes the most likely (a zero-weight candidate rises to the top). Requires the Pro plan or above. |
| extreme | boolean | Return the drawn candidate with its string and number leaves wrapped in a hostile encoding (structure and booleans/null intact). Requires the Pro plan or above. |
| invalid | boolean | Return a sentinel object NOT among `choices` ({ __invalid__: true, token }), with probability 0 — for exercising unexpected-shape handling. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/objectResponse fields
| Field | Type | Description |
|---|---|---|
| valueoptional | object | The drawn candidate, returned verbatim. |
| probability | number | The candidate's weight normalized by the sum of all weights. |
API reference
GET /v1/email
Try on playgroundReturns a realistic synthetic email address drawn from a mix of EU countries. Pass `countries` as a comma-separated list of ISO codes (`?countries=pl,de,it`) and each record is generated by one of them, picked at random — so a batch can mix Polish, German, and Italian addresses, each with its own regional providers and corporate TLDs. Omit `countries` for all 27; each record reports its `country`. `domain` pins an exact domain; `domainCategory` (`free`/`regional`/`corporate`/`any`) scopes a weighted-random draw. `pattern` selects the local-part shape (`first.last`, `first.company`, …) or `any`. `plusTag` controls plus-addressing — `true` always adds a random tag, `false` never, any other value is the tag verbatim. `exotic=true` opts in to the rarer RFC-valid local-part characters.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| countries | "at" | "be" | "bg" | "cy" | "cz" | "de" | "dk" | "ee" | "es" | "fi" | "fr" | "gr" | "hr" | "hu" | "ie" | "it" | "lt" | "lu" | "lv" | "mt" | "nl" | "pl" | "pt" | "ro" | "se" | "si" | "sk"[] | Comma-separated ISO 3166 country codes to draw from, e.g. `pl,de,it`. Omit for all 27. |
| domain | stringpattern ^[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ | Pin an exact domain, e.g. "gmail.com". Overrides domainCategory. |
| domainCategory | "free" | "regional" | "corporate" | "any" | Scope the random domain draw: free webmail, regional providers, corporate domains, or any. |
| edge | boolean | Restrict output to edge-case addresses from the rare corners of the format. |
| exotic | boolean | Allow rarer RFC-valid local-part characters (%, =, ~). Off by default. |
| extreme | boolean | Return a correct address whose value is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). localPart, domain, and the decomposition stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | "any" | Local-part shape, e.g. "first.last"; "any" picks a weighted-random one. |
| plusTag | stringpattern ^[A-Za-z0-9_-]+$ | Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/emailResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full email address, e.g. "anna.schmidt+news@mueller-bau.de". |
| localPart | string | The part before the `@`, including any plus tag. |
| domain | string | The domain, e.g. "gmail.com", "wp.pl", or "mueller-bau.de". |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | Which local-part pattern produced the address. |
| domainCategory | "free" | "regional" | "corporate" | Whether the domain is free, regional, or corporate. |
| company | string | The company name a corporate domain or company local-part was derived from, or `null`. |
| plusTag | string | The plus-addressing tag, or `null` when none. |
| country | string | ISO 3166 alpha-2 code of the country this address was drawn from. |
API reference
GET /v1/lorem
Try on playgroundReturns classic "Lorem ipsum…" placeholder text. The size is set by one of `bytes`, `chars`, `words`, or `paragraphs` — when more than one is given the most precise wins, in that order. With none given a few paragraphs are returned. `bytes`/`chars` cut on an exact boundary (the final word may be clipped); `words`/`paragraphs` end on a whole sentence. `startWithLorem=false` starts from a random word instead of the canonical opening.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| bytes | integer1–100000 | Target length in UTF-8 bytes (1–100000). Most precise unit wins if several are given. |
| chars | integer1–100000 | Target length in characters (1–100000). |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge cases from the rare corners of the domain. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| paragraphs | integer1–1000 | Target length in paragraphs (1–1000). |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| startWithLorem | boolean | Whether the text opens with the canonical "Lorem ipsum dolor sit amet…". Default true. |
| words | integer1–10000 | Target length in words (1–10000). |
Request
curl https://api.real-fake-data.com/v1/loremResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The generated lorem-ipsum text. |
| words | integer | Number of words in the text. |
| chars | integer | Length of the text in characters. |
| bytes | integer | Length of the text in UTF-8 bytes. |
| paragraphs | integer | Number of blank-line-separated paragraphs. |
| startedWithLorem | boolean | Whether the text begins with the canonical "Lorem ipsum…" opening. |
API reference
GET /v1/object-id
Try on playgroundReturns a synthetic MongoDB ObjectId — a well-formed 24-character hex string. The value is derived entirely from the seed (timestamp and counter regions are synthetic, not wall-clock), so the same seed always reproduces the same id.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge cases from the rare corners of the domain. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/object-idResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The 24-character hex MongoDB ObjectId. |
API reference
GET /v1/nanoid
Try on playgroundReturns a synthetic Nano ID — a compact URL-safe identifier. `size` sets the length (default 21); `alphabet` overrides the default URL-safe 64-character set. Output is derived from the seed, so the same seed and params always reproduce the same id.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| alphabet | string | Custom alphabet to draw from. Default is nanoid’s URL-safe 64-character set. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge cases from the rare corners of the domain. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| size | integer1–255 | Id length in characters (1–255). Default 21. |
Request
curl https://api.real-fake-data.com/v1/nanoidResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The generated Nano ID. |
API reference
GET /v1/person-name
Try on playgroundReturns a realistic synthetic person name drawn from a mix of EU countries. Pass `countries` as a comma-separated list of ISO codes (`?countries=pl,sk,it`) and each record is generated by one of them, picked at random — so a batch can mix Polish, Slovak, and Italian names, each in its own local form. Omit `countries` to draw from all 27 EU countries. Each record reports the `country` it came from. `sex`, `edge`, and `caseStrict` work as on the per-country endpoints.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname (all-lower, all-upper, or random); initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| countries | "at" | "be" | "bg" | "cy" | "cz" | "de" | "dk" | "ee" | "es" | "fi" | "fr" | "gr" | "hr" | "hu" | "ie" | "it" | "lt" | "lu" | "lv" | "mt" | "nl" | "pl" | "pt" | "ro" | "se" | "si" | "sk"[] | Comma-separated ISO 3166 country codes to draw from, e.g. `pl,sk,it`. Omit for all 27. |
| edge | boolean | Bias toward edge-case name shapes (second given names, double surnames, short names). |
| extreme | boolean | Return a correct name whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Gendered form of the name: "m" or "f". Omit for random. |
Request
curl https://api.real-fake-data.com/v1/person-nameResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s), in the local script, agreeing with the sex. |
| surname | string | Surname in the form matching the sex (inflected where required). |
| initials | string | Uppercase initials of name and surname, no dots. |
| sex | "m" | "f" | The sex the name was inflected for. |
| country | string | ISO 3166 alpha-2 code of the country this name was drawn from. |
API reference
GET /v1/offering
Try on playgroundReturns a realistic synthetic offering drawn from a mix of EU countries. Pass `countries` as a comma-separated list of ISO codes (`?countries=pl,de,it`) and each record is generated by one of them, picked at random — so a batch mixes localized offerings from several countries. Omit `countries` to draw from all 27. Each record reports the `country` it came from. `industry`, `type`, `industryName`/`offeringName` full-text filters, and `edge`/`extreme`/`invalid` work as on the per-country endpoints.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| countries | "at" | "be" | "bg" | "cy" | "cz" | "de" | "dk" | "ee" | "es" | "fi" | "fr" | "gr" | "hr" | "hu" | "ie" | "it" | "lt" | "lu" | "lv" | "mt" | "nl" | "pl" | "pt" | "ro" | "se" | "si" | "sk"[] | Comma-separated ISO 3166 country codes to draw from, e.g. `pl,de,it`. Omit for all 27. |
| edge | boolean | Restrict to edge-case offerings (price-band extremes, unusual units, long names). |
| extreme | boolean | Return a correct offering whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, homoglyphs, or bidi marks). Price, unit and industry label stay clean. |
| industry | "73" | "28.3" | "93.2" | "71" | "90" | "29.3" | "10.7" | "64" | "56.30" | "11" | "30.1" | "47.6" | "26.7" | "95.3" | "56.21" | "23.4" | "81.2" | "14" | "95.1" | "26.2" | "41" | "70" | "26.4" | "49.4" | "10.5" | "74.1" | "85" | "43.2" | "82.3" | "59" | "56.12" | "31" | "92" | "81.3" | "23.1" | "47.1" | "96.2" | "27.5" | "86.1" | "55" | "65" | "32.1" | "96.1" | "15" | "69" | "86.2" | "91.2" | "32.2" | "21" | "74.2" | "58" | "68" | "78" | "43.3" | "77" | "56.11" | "80" | "62" | "10.8" | "93.1" | "32.3" | "61" | "13" | "32.4" | "74.3" | "79" | "75" | "63" | "16" | Pin the industry by NACE code. Omit to draw across all covered industries. |
| industryName | string | Full-text filter: keep offerings whose localized industry label contains this. |
| invalid | boolean | Return a deliberately invalid offering (a price outside its band, a negative price, or an empty name) for negative-path testing. Cannot combine with edge/extreme. |
| language | "en" | "bg" | "hr" | "cs" | "da" | "nl" | "et" | "fi" | "fr" | "de" | "el" | "hu" | "ga" | "it" | "lv" | "lt" | "lb" | "mt" | "pl" | "pt" | "ro" | "sk" | "sl" | "es" | "sv" | Pin the name language. Omit for the country’s weighted mix. |
| offeringName | string | Full-text filter: keep offerings whose localized name contains this. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "product" | "service" | Restrict to products or services. Omit for both. |
Request
curl https://api.real-fake-data.com/v1/offeringResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The offering name in the resolved language. |
| offeringName | string | The full offering name (alias of `value`). |
| kind | "product" | "service" | Whether it is a good or a rendered service. |
| unit | string | The unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …). |
| price | integer | A single plausible price, in EUR minor units (cents). |
| currency | "EUR" | Currency of `price`; always EUR. |
| industryCode | string | NACE Rev. 2.1 code of the offering’s industry. |
| industryName | string | The localized industry label in the resolved language. |
| language | string | BCP-47 subtag used for this record’s names. |
| country | string | ISO 3166 alpha-2 code of the country this offering was drawn from. |
API reference
GET /v1/custom-regex
Try on playgroundReturns a random string that matches the supplied regular expression (`pattern`) — for seeding data whose format the catalog does not model, such as in-house serial numbers or SKUs. `maxRepetition` caps how many times unbounded quantifiers (`*`, `+`, `{n,}`) expand. Back-references, look-around assertions, and patterns with an over-large worst-case expansion are rejected. This endpoint requires the Pro plan or above. Percent-encode reserved characters in `pattern` — most importantly `+` must be sent as `%2B`, since a literal `+` in a query string decodes to a space.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge cases from the rare corners of the domain. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| maxRepetition | integer1–256 | How many times unbounded quantifiers (*, +, {n,}) may expand. Default 32. |
| pattern* | string | Regular expression (source form, no delimiters) to generate a matching string for, e.g. "[A-Z]{2}-\d{6}". |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/custom-regexResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | A random string matching the supplied pattern. |
| pattern | string | The source pattern the value was generated from. |
API reference
GET /v1/ulid
Try on playgroundReturns a synthetic ULID — a 26-character Crockford-Base32 identifier. The leading timestamp is derived from the seed, not the wall clock, so the same seed always reproduces the same id.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge cases from the rare corners of the domain. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/ulidResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The 26-character Crockford-Base32 ULID. |
API reference
GET /v1/uuid
Try on playgroundReturns a synthetic UUID. `version=4` (default) is fully random; `version=7` is time-ordered per RFC 9562. The v7 timestamp is derived from the seed, not the wall clock, so the same seed always reproduces the same id.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge cases from the rare corners of the domain. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| version | "4" | "7" | UUID version: "4" (random) or "7" (time-ordered). Default "4". |
Request
curl https://api.real-fake-data.com/v1/uuidResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The canonical hyphenated lowercase UUID. |
| version | "4" | "7" | The UUID version generated. |
API reference
GET /v1/at/company
Try on playgroundReturns a consistent synthetic Austrian company in one call: a full trading name with its legal form, plus the matching firmenbuchnummer, uid, steuernummer. Shape the name with `strategy` and `legalForm` (as on `/v1/at/company-name`). Set `invalid=true` to corrupt the checksummed identifiers (the name stays intact), for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case values from the rare corners. |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Corrupt the checksummed identifiers, for testing validators. |
| legalForm | "any" | "none" | "GmbH" | "GesmbH" | "AG" | "OG" | "KG" | "e.U." | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family for the company name. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/at/companyResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form, or `null` when none was added. |
| firmenbuchnummer | string | The matching firmenbuchnummer identifier. |
| uid | string | The matching uid identifier. |
| steuernummer | string | The matching steuernummer identifier. |
API reference
GET /v1/at/company-name
Try on playgroundReturns a realistic synthetic Austrian company name across the naming families (coined, owner-surname, descriptive, modern), with an optional trailing legal form in its authentic local form. Pin `strategy` or `legalForm`, set `legalForm=none` to omit it, or `edge=true` for the punctuation-heavy / long-form corners.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case names (punctuation-heavy families, long/rare forms). |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| legalForm | "any" | "none" | "GmbH" | "GesmbH" | "AG" | "OG" | "KG" | "e.U." | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/at/company-nameResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form (e.g. `GmbH`, `S.r.l.`), or `null` when none was added. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Which naming family produced the name. |
API reference
GET /v1/at/email
Try on playgroundReturns a realistic synthetic Austrian email address: a name-based local part (romanised to ASCII) on a free webmail, a Austrian regional provider, or a corporate domain built from a Austrian company brand. `domain` pins an exact domain; `domainCategory` (`free`/`regional`/`corporate`/`any`) scopes a weighted-random draw. `pattern` selects the local-part shape or `any`. `plusTag` controls plus-addressing; `exotic=true` allows the rarer RFC-valid characters.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| domain | stringpattern ^[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ | Pin an exact domain, e.g. "gmail.com". Overrides domainCategory. |
| domainCategory | "free" | "regional" | "corporate" | "any" | Scope the random domain draw: free webmail, regional providers, corporate domains, or any. |
| edge | boolean | Restrict output to edge-case addresses from the rare corners of the format. |
| exotic | boolean | Allow rarer RFC-valid local-part characters (%, =, ~). Off by default. |
| extreme | boolean | Return a correct address whose value is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). localPart, domain, and the decomposition stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | "any" | Local-part shape, e.g. "first.last"; "any" picks a weighted-random one. |
| plusTag | stringpattern ^[A-Za-z0-9_-]+$ | Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/at/emailResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full email address, e.g. "anna.schmidt+news@mueller-bau.de". |
| localPart | string | The part before the `@`, including any plus tag. |
| domain | string | The domain, e.g. "gmail.com", "wp.pl", or "mueller-bau.de". |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | Which local-part pattern produced the address. |
| domainCategory | "free" | "regional" | "corporate" | Whether the domain is free, regional, or corporate. |
| company | string | The company name a corporate domain or company local-part was derived from, or `null`. |
| plusTag | string | The plus-addressing tag, or `null` when none. |
API reference
GET /v1/at/firmenbuchnummer
Try on playgroundReturns a valid Austrian Firmenbuchnummer (commercial-register number) with a correct check letter, e.g. `FN 123456a`. Set `invalid=true` for a deliberately wrong check letter.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case numbers from the rare corners. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| invalid | boolean | Return a Firmenbuchnummer with a deliberately wrong check letter. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/at/firmenbuchnummerResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The rendered Firmenbuchnummer, e.g. `FN 123456a`. |
| number | integer | The sequence number (1–999999), no prefix or check letter. |
| letter | string | The lowercase check letter (`a`–`z`). |
API reference
GET /v1/at/iban
Try on playgroundReturns a valid Austrian IBAN with a correct checksum. Pin the issuing bank with `bankCode` (5-digit bank code) or `bankName` (mutually exclusive), or let it be chosen at random. Set `invalid=true` to get an IBAN with deliberately wrong check digits, for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| bankCode | string | Pin the issuing bank by its 5-digit bank code. Mutually exclusive with bankName. |
| bankName | string | Pin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case IBANs from the rare corners of the format. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "grouped" | "compact" | IBAN rendering: grouped or compact. Default grouped. |
| invalid | boolean | Return an IBAN with deliberately wrong check digits, for testing validators. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/at/ibanResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The IBAN in the requested format. |
| electronicFormat | string | The space-free electronic form of the IBAN. |
| bankCode | string | The bank identifier embedded in the IBAN. |
| bankName | string | Human-readable name of the issuing bank. |
API reference
GET /v1/at/person
Try on playgroundReturns a synthetic Austrian person: given name(s), surname, initials, birth date, and the matching SVNR. Constrain with `sex` and age/birth-date filters (contradictory combinations are rejected with a 400). Set `invalid=true` for a deliberately wrong check value, `edge=true` for rare-corner values, and `caseStrict=false` to mangle the name casing.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| atAge | integer | Exact age in years at request time. |
| bornAfter | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornBefore | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornOn | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD. |
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname; initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias the number and name shape toward their rarely-exercised corners. |
| extreme | boolean | Return a correct person whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials, birthDate, and the national identifier stay clean. |
| invalid | boolean | Return a person whose SVNR has a deliberately wrong check value. |
| olderThan | integer | Minimum age in years at request time. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Encoded sex: "m" or "f". |
| youngerThan | integer | Maximum age in years at request time. |
Request
curl https://api.real-fake-data.com/v1/at/personResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s). |
| surname | string | Surname. |
| initials | string | Uppercase initials of name and surname, no dots. |
| birthDate | string | The birth date, ISO `YYYY-MM-DD`. |
| svnr | string | The matching SVNR. |
API reference
GET /v1/at/person-name
Try on playgroundReturns a realistic synthetic Austrian person name: given name(s), surname, and initials, in the local script. Use `sex` to pin the gendered form (`m`/`f`) or omit it for a random one. `edge=true` biases the name shape — second given names, double-barrelled surnames, and very short names become far more likely. Set `caseStrict=false` to deliberately mangle the name/surname casing (initials stay proper uppercase).
Query parameters
| Parameter | Type | Description |
|---|---|---|
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname (all-lower, all-upper, or random); initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias toward edge-case name shapes (second given names, double surnames, short names). |
| extreme | boolean | Return a correct name whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Gendered form of the name: "m" or "f". Omit for random. |
Request
curl https://api.real-fake-data.com/v1/at/person-nameResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s), in the local script, agreeing with the reported sex. |
| surname | string | Surname in the form matching the sex (inflected where the language requires it). |
| initials | string | Uppercase initials of name and surname, no dots, e.g. `JK`. |
| sex | "m" | "f" | The sex the name was inflected for. |
API reference
GET /v1/at/offering
Try on playgroundReturns a realistic synthetic Austrian offering — a product or service with a localized name, a plausible EUR price, its unit, and its industry label. Pin `industry` (NACE code), `type` (product/service), or filter by `industryName`/`offeringName` full text. Set `edge=true` for the price/format corners, `extreme=true` for a hostile-encoded name, or `invalid=true` for a broken record.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict to edge-case offerings (price-band extremes, unusual units, long names). |
| extreme | boolean | Return a correct offering whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, homoglyphs, or bidi marks). Price, unit and industry label stay clean. |
| industry | "73" | "28.3" | "93.2" | "71" | "90" | "29.3" | "10.7" | "64" | "56.30" | "11" | "30.1" | "47.6" | "26.7" | "95.3" | "56.21" | "23.4" | "81.2" | "14" | "95.1" | "26.2" | "41" | "70" | "26.4" | "49.4" | "10.5" | "74.1" | "85" | "43.2" | "82.3" | "59" | "56.12" | "31" | "92" | "81.3" | "23.1" | "47.1" | "96.2" | "27.5" | "86.1" | "55" | "65" | "32.1" | "96.1" | "15" | "69" | "86.2" | "91.2" | "32.2" | "21" | "74.2" | "58" | "68" | "78" | "43.3" | "77" | "56.11" | "80" | "62" | "10.8" | "93.1" | "32.3" | "61" | "13" | "32.4" | "74.3" | "79" | "75" | "63" | "16" | Pin the industry by NACE code. Omit to draw across all covered industries. |
| industryName | string | Full-text filter: keep offerings whose localized industry label contains this. |
| invalid | boolean | Return a deliberately invalid offering (a price outside its band, a negative price, or an empty name) for negative-path testing. Cannot combine with edge/extreme. |
| language | "de" | Pin the name language. Omit for the country’s weighted mix. |
| offeringName | string | Full-text filter: keep offerings whose localized name contains this. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "product" | "service" | Restrict to products or services. Omit for both. |
Request
curl https://api.real-fake-data.com/v1/at/offeringResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The offering name in the resolved language. |
| offeringName | string | The full offering name (alias of `value`). |
| kind | "product" | "service" | Whether it is a good or a rendered service. |
| unit | string | The unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …). |
| price | integer | A single plausible price, in EUR minor units (cents). |
| currency | "EUR" | Currency of `price`; always EUR. |
| industryCode | string | NACE Rev. 2.1 code of the offering’s industry. |
| industryName | string | The localized industry label in the resolved language. |
| language | string | BCP-47 subtag used for this record’s names. |
API reference
GET /v1/at/steuernummer
Try on playgroundReturns a format-valid Austrian Steuernummer (tax number), e.g. `12-345/6789`. The Steuernummer has no uniform checksum, so it is format-only — there is no `invalid` flag.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case numbers from the rare corners. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/at/steuernummerResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The Steuernummer rendered as `NN-NNN/NNNN`. |
| digits | string | The canonical 9 digits without separators. |
API reference
GET /v1/at/svnr
Try on playgroundReturns a valid Austrian SVNR (Sozialversicherungsnummer) with a correct check digit. Constrain with age/birth-date filters (the SVNR encodes a birth date but no sex). Contradictory combinations are rejected with a 400. Set `invalid=true` for a deliberately wrong check digit.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| atAge | integer | Exact age in years at request time. |
| bornAfter | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornBefore | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornOn | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case values. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| invalid | boolean | Return an SVNR with a deliberately wrong check digit; the birth date stays valid. |
| olderThan | integer | Minimum age in years at request time. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| youngerThan | integer | Maximum age in years at request time. |
Request
curl https://api.real-fake-data.com/v1/at/svnrResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The bare 10-digit SVNR. |
| digits | string | The canonical 10-digit SVNR. |
| birthDate | string | The encoded birth date, ISO `YYYY-MM-DD`. |
API reference
GET /v1/at/uid
Try on playgroundReturns a valid Austrian UID (Umsatzsteuer-Identifikationsnummer) with a correct check digit. Use `format=vat` for the intra-EU `AT`-prefixed form. Set `invalid=true` for a UID with a deliberately wrong check digit.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case UIDs from the rare corners. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "national" | "vat" | Rendering: `national` U-prefixed form (default) or `vat` intra-EU form. |
| invalid | boolean | Return a UID with a deliberately wrong check digit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/at/uidResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The UID in the requested format (national or VAT). |
| digits | string | The canonical 8 digits (7 payload + 1 check). |
API reference
GET /v1/at/vehicle-registration
Try on playgroundReturns a realistic Austrian vehicle registration plate. `type` selects the kind: `standard` (default, `<DISTRICT> NNN LL`, e.g. GU 234 KP), `custom` (reversed Wunschkennzeichen, letters-first then a digit, e.g. W ABC 1), `motorcycle` (same district code + sequence), `military` (`BH NNNN`), `police` (`BP NNNN`), or `diplomatic` (`<state>D NNN`, e.g. WD 123). For the region-encoding types, `district` and `state` narrow the head code, matched by name (an unknown district, state, or pair is a 400); military/police ignore them. Austrian plates carry no checksum, so there is no invalid variant. Use `format` to choose spaced or compact rendering.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| district | string | Restrict a region-encoding plate to a district (Bezirk/Statutarstadt) by name, e.g. Graz-Umgebung or Wien. |
| edge | boolean | Restrict output to edge-case plates from the rare corners of the format. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "with-space" | "compact" | Plate rendering: with a space or compact. Default with-space. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| state | string | Restrict a region-encoding plate to a federal state (Bundesland) by name, e.g. Steiermark or Tirol. |
| type | "standard" | "custom" | "motorcycle" | "military" | "police" | "diplomatic" | Plate kind: standard, custom, motorcycle, military, police, or diplomatic. |
Request
curl https://api.real-fake-data.com/v1/at/vehicle-registrationResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The plate in the requested format, e.g. "GU 234 KP". |
| type | "standard" | "custom" | "motorcycle" | "military" | "police" | "diplomatic" | Which kind of plate this is. |
| districtoptional | string | The district (Bezirk/Statutarstadt) whose code heads the plate, e.g. Graz-Umgebung. Present for region-encoding types, absent for military/police. |
| stateoptional | string | The federal state (Bundesland) the district sits in, e.g. Steiermark. Present whenever district is. |
API reference
GET /v1/be/company
Try on playgroundReturns a consistent synthetic Belgian company in one call: a full trading name with its legal form, plus the matching ondernemingsnummer. Shape the name with `strategy` and `legalForm` (as on `/v1/be/company-name`). Set `invalid=true` to corrupt the checksummed identifiers (the name stays intact), for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case values from the rare corners. |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Corrupt the checksummed identifiers, for testing validators. |
| legalForm | "any" | "none" | "BV" | "NV" | "VOF" | "CommV" | "Maatschap" | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family for the company name. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/be/companyResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form, or `null` when none was added. |
| ondernemingsnummer | string | The matching ondernemingsnummer identifier. |
API reference
GET /v1/be/company-name
Try on playgroundReturns a realistic synthetic Belgian company name across the naming families (coined, owner-surname, descriptive, modern), with an optional trailing legal form in its authentic local form. Pin `strategy` or `legalForm`, set `legalForm=none` to omit it, or `edge=true` for the punctuation-heavy / long-form corners.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case names (punctuation-heavy families, long/rare forms). |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| legalForm | "any" | "none" | "BV" | "NV" | "VOF" | "CommV" | "Maatschap" | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/be/company-nameResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form (e.g. `GmbH`, `S.r.l.`), or `null` when none was added. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Which naming family produced the name. |
API reference
GET /v1/be/email
Try on playgroundReturns a realistic synthetic Belgian email address: a name-based local part (romanised to ASCII) on a free webmail, a Belgian regional provider, or a corporate domain built from a Belgian company brand. `domain` pins an exact domain; `domainCategory` (`free`/`regional`/`corporate`/`any`) scopes a weighted-random draw. `pattern` selects the local-part shape or `any`. `plusTag` controls plus-addressing; `exotic=true` allows the rarer RFC-valid characters.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| domain | stringpattern ^[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ | Pin an exact domain, e.g. "gmail.com". Overrides domainCategory. |
| domainCategory | "free" | "regional" | "corporate" | "any" | Scope the random domain draw: free webmail, regional providers, corporate domains, or any. |
| edge | boolean | Restrict output to edge-case addresses from the rare corners of the format. |
| exotic | boolean | Allow rarer RFC-valid local-part characters (%, =, ~). Off by default. |
| extreme | boolean | Return a correct address whose value is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). localPart, domain, and the decomposition stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | "any" | Local-part shape, e.g. "first.last"; "any" picks a weighted-random one. |
| plusTag | stringpattern ^[A-Za-z0-9_-]+$ | Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/be/emailResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full email address, e.g. "anna.schmidt+news@mueller-bau.de". |
| localPart | string | The part before the `@`, including any plus tag. |
| domain | string | The domain, e.g. "gmail.com", "wp.pl", or "mueller-bau.de". |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | Which local-part pattern produced the address. |
| domainCategory | "free" | "regional" | "corporate" | Whether the domain is free, regional, or corporate. |
| company | string | The company name a corporate domain or company local-part was derived from, or `null`. |
| plusTag | string | The plus-addressing tag, or `null` when none. |
API reference
GET /v1/be/iban
Try on playgroundReturns a valid Belgian IBAN with a correct checksum. Pin the issuing bank with `bankCode` (3-digit bank code) or `bankName` (mutually exclusive), or let it be chosen at random. Set `invalid=true` to get an IBAN with deliberately wrong check digits, for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| bankCode | string | Pin the issuing bank by its 3-digit bank code. Mutually exclusive with bankName. |
| bankName | string | Pin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case IBANs from the rare corners of the format. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "grouped" | "compact" | IBAN rendering: grouped or compact. Default grouped. |
| invalid | boolean | Return an IBAN with deliberately wrong check digits, for testing validators. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/be/ibanResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The IBAN in the requested format. |
| electronicFormat | string | The space-free electronic form of the IBAN. |
| bankCode | string | The bank identifier embedded in the IBAN. |
| bankName | string | Human-readable name of the issuing bank. |
API reference
GET /v1/be/ondernemingsnummer
Try on playgroundReturns a valid Belgian Ondernemingsnummer (enterprise number) with a correct `97 − (first8 mod 97)` check. Use `format=vat` for the BE VAT number. Set `invalid=true` for a number with a deliberately wrong check.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case enterprise numbers from the rare corners. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "national" | "vat" | Rendering: bare 10-digit enterprise number (default), or BE VAT number. |
| invalid | boolean | Return an enterprise number with a deliberately wrong check. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/be/ondernemingsnummerResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The number in the requested format (national or VAT). |
| digits | string | The canonical, unprefixed 10-digit enterprise number. |
API reference
GET /v1/be/person
Try on playgroundReturns a synthetic Belgian person: given name(s), surname, initials, birth date, and the matching national register number (RRN). Constrain with `sex` and age/birth-date filters (contradictory combinations are rejected with a 400). Set `invalid=true` for a deliberately wrong check value, `edge=true` for rare-corner values, and `caseStrict=false` to mangle the name casing.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| atAge | integer | Exact age in years at request time. |
| bornAfter | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornBefore | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornOn | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD. |
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname; initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias the number and name shape toward their rarely-exercised corners. |
| extreme | boolean | Return a correct person whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials, birthDate, and the national identifier stay clean. |
| invalid | boolean | Return a person whose national register number (RRN) has a deliberately wrong check value. |
| olderThan | integer | Minimum age in years at request time. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Encoded sex: "m" or "f". |
| youngerThan | integer | Maximum age in years at request time. |
Request
curl https://api.real-fake-data.com/v1/be/personResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s). |
| surname | string | Surname. |
| initials | string | Uppercase initials of name and surname, no dots. |
| birthDate | string | The birth date, ISO `YYYY-MM-DD`. |
| rijksregisternummer | string | The matching national register number (RRN). |
API reference
GET /v1/be/person-name
Try on playgroundReturns a realistic synthetic Belgian person name: given name(s), surname, and initials, in the local script. Use `sex` to pin the gendered form (`m`/`f`) or omit it for a random one. `edge=true` biases the name shape — second given names, double-barrelled surnames, and very short names become far more likely. Set `caseStrict=false` to deliberately mangle the name/surname casing (initials stay proper uppercase).
Query parameters
| Parameter | Type | Description |
|---|---|---|
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname (all-lower, all-upper, or random); initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias toward edge-case name shapes (second given names, double surnames, short names). |
| extreme | boolean | Return a correct name whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Gendered form of the name: "m" or "f". Omit for random. |
Request
curl https://api.real-fake-data.com/v1/be/person-nameResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s), in the local script, agreeing with the reported sex. |
| surname | string | Surname in the form matching the sex (inflected where the language requires it). |
| initials | string | Uppercase initials of name and surname, no dots, e.g. `JK`. |
| sex | "m" | "f" | The sex the name was inflected for. |
API reference
GET /v1/be/offering
Try on playgroundReturns a realistic synthetic Belgian offering — a product or service with a localized name, a plausible EUR price, its unit, and its industry label. Belgium is trilingual: without a pinned `language`, names draw from the weighted nl/fr/de mix. Pin `industry` (NACE code), `type` (product/service), or filter by `industryName`/`offeringName` full text. Set `edge=true` for the price/format corners, `extreme=true` for a hostile-encoded name, or `invalid=true` for a deliberately broken record.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict to edge-case offerings (price-band extremes, unusual units, long names). |
| extreme | boolean | Return a correct offering whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, homoglyphs, or bidi marks). Price, unit and industry label stay clean. |
| industry | "73" | "28.3" | "93.2" | "71" | "90" | "29.3" | "10.7" | "64" | "56.30" | "11" | "30.1" | "47.6" | "26.7" | "95.3" | "56.21" | "23.4" | "81.2" | "14" | "95.1" | "26.2" | "41" | "70" | "26.4" | "49.4" | "10.5" | "74.1" | "85" | "43.2" | "82.3" | "59" | "56.12" | "31" | "92" | "81.3" | "23.1" | "47.1" | "96.2" | "27.5" | "86.1" | "55" | "65" | "32.1" | "96.1" | "15" | "69" | "86.2" | "91.2" | "32.2" | "21" | "74.2" | "58" | "68" | "78" | "43.3" | "77" | "56.11" | "80" | "62" | "10.8" | "93.1" | "32.3" | "61" | "13" | "32.4" | "74.3" | "79" | "75" | "63" | "16" | Pin the industry by NACE code. Omit to draw across all covered industries. |
| industryName | string | Full-text filter: keep offerings whose localized industry label contains this. |
| invalid | boolean | Return a deliberately invalid offering (a price outside its band, a negative price, or an empty name) for negative-path testing. Cannot combine with edge/extreme. |
| language | "nl" | "fr" | "de" | Pin the name language. Omit for the country’s weighted mix. |
| offeringName | string | Full-text filter: keep offerings whose localized name contains this. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "product" | "service" | Restrict to products or services. Omit for both. |
Request
curl https://api.real-fake-data.com/v1/be/offeringResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The offering name in the resolved language. |
| offeringName | string | The full offering name (alias of `value`). |
| kind | "product" | "service" | Whether it is a good or a rendered service. |
| unit | string | The unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …). |
| price | integer | A single plausible price, in EUR minor units (cents). |
| currency | "EUR" | Currency of `price`; always EUR. |
| industryCode | string | NACE Rev. 2.1 code of the offering’s industry. |
| industryName | string | The localized industry label in the resolved language. |
| language | string | BCP-47 subtag used for this record’s names. |
API reference
GET /v1/be/rijksregisternummer
Try on playgroundReturns a valid Belgian Rijksregisternummer (RRN) with correct check digits. Constrain with `sex` and age/birth-date filters (the full birth date is encoded). Use `kind=bis` for a BIS-number. Contradictory combinations are rejected with a 400. Set `invalid=true` for deliberately wrong check digits.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| atAge | integer | Exact age in years at request time. |
| bornAfter | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornBefore | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornOn | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case values. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| invalid | boolean | Return an RRN with deliberately wrong check digits; birth date/sex stay valid. |
| kind | "national" | "bis" | Number kind: ordinary national RRN (default) or a BIS-number. |
| olderThan | integer | Minimum age in years at request time. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Encoded sex: "m" or "f". |
| youngerThan | integer | Maximum age in years at request time. |
Request
curl https://api.real-fake-data.com/v1/be/rijksregisternummerResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The 11-digit RRN rendered as bare digits. |
| digits | string | The canonical 11-digit RRN. |
| birthDate | string | The encoded birth date, ISO `YYYY-MM-DD`. |
| sex | "m" | "f" | Encoded sex: `m` (odd serial) or `f` (even serial). |
API reference
GET /v1/be/vehicle-registration
Try on playgroundReturns a realistic Belgian vehicle registration plate. `type` selects the kind: `standard` (default, `N-LLL-NNN`, e.g. 1-ABC-123), `custom` (personalised vanity plate), `motorcycle` (`M-…`), `moped` (`S-…`), `diplomatic` (`CD-…`), `dealer` (`Z`-series), `export` (`X`-series with a year), `oldtimer` (`O`-series), `taxi` (`TX`-series), or `trailer` (`Q`-series). Belgian plates are national (no region) and carry no checksum, so there is no `invalid` variant. Use `format` to choose hyphenated, spaced, or compact rendering.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case plates from the rare corners of the format. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "hyphen" | "with-space" | "compact" | Plate rendering: hyphenated, with a space, or compact. Default hyphen. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "standard" | "custom" | "motorcycle" | "moped" | "diplomatic" | "dealer" | "export" | "oldtimer" | "taxi" | "trailer" | Plate kind: standard, custom, motorcycle, moped, diplomatic, dealer, export, oldtimer, taxi, or trailer. |
Request
curl https://api.real-fake-data.com/v1/be/vehicle-registrationResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The plate in the requested format, e.g. "1-ABC-123". |
| type | "standard" | "custom" | "motorcycle" | "moped" | "diplomatic" | "dealer" | "export" | "oldtimer" | "taxi" | "trailer" | Which kind of plate this is. |
API reference
GET /v1/bg/company
Try on playgroundReturns a consistent synthetic Bulgarian company in one call: a full trading name with its legal form, plus the matching eik. Shape the name with `strategy` and `legalForm` (as on `/v1/bg/company-name`). Set `invalid=true` to corrupt the checksummed identifiers (the name stays intact), for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case values from the rare corners. |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Corrupt the checksummed identifiers, for testing validators. |
| legalForm | "any" | "none" | "ООД" | "ЕООД" | "АД" | "ЕТ" | "СД" | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family for the company name. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/bg/companyResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form, or `null` when none was added. |
| eik | string | The matching eik identifier. |
API reference
GET /v1/bg/company-name
Try on playgroundReturns a realistic synthetic Bulgarian company name across the naming families (coined, owner-surname, descriptive, modern), with an optional trailing legal form in its authentic local form. Pin `strategy` or `legalForm`, set `legalForm=none` to omit it, or `edge=true` for the punctuation-heavy / long-form corners.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case names (punctuation-heavy families, long/rare forms). |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| legalForm | "any" | "none" | "ООД" | "ЕООД" | "АД" | "ЕТ" | "СД" | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/bg/company-nameResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form (e.g. `GmbH`, `S.r.l.`), or `null` when none was added. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Which naming family produced the name. |
API reference
GET /v1/bg/egn
Try on playgroundReturns a valid Bulgarian EGN (Единен граждански номер, the unified civil number) with a correct check digit. Constrain with `sex` and age/birth-date filters (the full birth date is encoded). Contradictory combinations are rejected with a 400. Set `invalid=true` for a deliberately wrong check digit.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| atAge | integer | Exact age in years at request time. |
| bornAfter | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornBefore | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornOn | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case values. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| invalid | boolean | Return an EGN with a deliberately wrong check digit; date/sex stay valid. |
| olderThan | integer | Minimum age in years at request time. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Encoded sex: "m" or "f". |
| youngerThan | integer | Maximum age in years at request time. |
Request
curl https://api.real-fake-data.com/v1/bg/egnResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The EGN in the requested form (currently the bare 10 digits). |
| digits | string | The canonical 10-digit EGN. |
| birthDate | string | The encoded birth date, ISO `YYYY-MM-DD`. |
| sex | "m" | "f" | Encoded sex: `m` (even 9th digit) or `f` (odd 9th digit). |
API reference
GET /v1/bg/eik
Try on playgroundReturns a valid Bulgarian EIK (Единен идентификационен код, the company/Bulstat number) with a correct two-stage check digit. Use `format=vat` for the BG VAT number (`BG` + EIK). Set `invalid=true` for an EIK with a deliberately wrong check digit.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case EIKs from the rare corners. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "national" | "vat" | Rendering: bare 9-digit EIK (default) or BG VAT number. |
| invalid | boolean | Return an EIK with a deliberately wrong check digit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/bg/eikResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The identifier in the requested format (national EIK or BG VAT). |
| digits | string | The canonical, unprefixed 9-digit EIK. |
API reference
GET /v1/bg/email
Try on playgroundReturns a realistic synthetic Bulgarian email address: a name-based local part (romanised to ASCII) on a free webmail, a Bulgarian regional provider, or a corporate domain built from a Bulgarian company brand. `domain` pins an exact domain; `domainCategory` (`free`/`regional`/`corporate`/`any`) scopes a weighted-random draw. `pattern` selects the local-part shape or `any`. `plusTag` controls plus-addressing; `exotic=true` allows the rarer RFC-valid characters.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| domain | stringpattern ^[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ | Pin an exact domain, e.g. "gmail.com". Overrides domainCategory. |
| domainCategory | "free" | "regional" | "corporate" | "any" | Scope the random domain draw: free webmail, regional providers, corporate domains, or any. |
| edge | boolean | Restrict output to edge-case addresses from the rare corners of the format. |
| exotic | boolean | Allow rarer RFC-valid local-part characters (%, =, ~). Off by default. |
| extreme | boolean | Return a correct address whose value is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). localPart, domain, and the decomposition stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | "any" | Local-part shape, e.g. "first.last"; "any" picks a weighted-random one. |
| plusTag | stringpattern ^[A-Za-z0-9_-]+$ | Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/bg/emailResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full email address, e.g. "anna.schmidt+news@mueller-bau.de". |
| localPart | string | The part before the `@`, including any plus tag. |
| domain | string | The domain, e.g. "gmail.com", "wp.pl", or "mueller-bau.de". |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | Which local-part pattern produced the address. |
| domainCategory | "free" | "regional" | "corporate" | Whether the domain is free, regional, or corporate. |
| company | string | The company name a corporate domain or company local-part was derived from, or `null`. |
| plusTag | string | The plus-addressing tag, or `null` when none. |
API reference
GET /v1/bg/iban
Try on playgroundReturns a valid Bulgarian IBAN with a correct checksum. Pin the issuing bank with `bankCode` (4-letter bank code) or `bankName` (mutually exclusive), or let it be chosen at random. Set `invalid=true` to get an IBAN with deliberately wrong check digits, for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| bankCode | string | Pin the issuing bank by its 4-letter bank code. Mutually exclusive with bankName. |
| bankName | string | Pin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case IBANs from the rare corners of the format. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "grouped" | "compact" | IBAN rendering: grouped or compact. Default grouped. |
| invalid | boolean | Return an IBAN with deliberately wrong check digits, for testing validators. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/bg/ibanResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The IBAN in the requested format. |
| electronicFormat | string | The space-free electronic form of the IBAN. |
| bankCode | string | The bank identifier embedded in the IBAN. |
| bankName | string | Human-readable name of the issuing bank. |
API reference
GET /v1/bg/person
Try on playgroundReturns a synthetic Bulgarian person: given name(s), surname, initials, birth date, and the matching EGN. Constrain with `sex` and age/birth-date filters (contradictory combinations are rejected with a 400). Set `invalid=true` for a deliberately wrong check value, `edge=true` for rare-corner values, and `caseStrict=false` to mangle the name casing.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| atAge | integer | Exact age in years at request time. |
| bornAfter | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornBefore | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornOn | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD. |
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname; initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias the number and name shape toward their rarely-exercised corners. |
| extreme | boolean | Return a correct person whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials, birthDate, and the national identifier stay clean. |
| invalid | boolean | Return a person whose EGN has a deliberately wrong check value. |
| olderThan | integer | Minimum age in years at request time. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Encoded sex: "m" or "f". |
| youngerThan | integer | Maximum age in years at request time. |
Request
curl https://api.real-fake-data.com/v1/bg/personResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s). |
| surname | string | Surname. |
| initials | string | Uppercase initials of name and surname, no dots. |
| birthDate | string | The birth date, ISO `YYYY-MM-DD`. |
| egn | string | The matching EGN. |
API reference
GET /v1/bg/person-name
Try on playgroundReturns a realistic synthetic Bulgarian person name: given name(s), surname, and initials, in the local script. Use `sex` to pin the gendered form (`m`/`f`) or omit it for a random one. `edge=true` biases the name shape — second given names, double-barrelled surnames, and very short names become far more likely. Set `caseStrict=false` to deliberately mangle the name/surname casing (initials stay proper uppercase).
Query parameters
| Parameter | Type | Description |
|---|---|---|
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname (all-lower, all-upper, or random); initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias toward edge-case name shapes (second given names, double surnames, short names). |
| extreme | boolean | Return a correct name whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Gendered form of the name: "m" or "f". Omit for random. |
Request
curl https://api.real-fake-data.com/v1/bg/person-nameResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s), in the local script, agreeing with the reported sex. |
| surname | string | Surname in the form matching the sex (inflected where the language requires it). |
| initials | string | Uppercase initials of name and surname, no dots, e.g. `JK`. |
| sex | "m" | "f" | The sex the name was inflected for. |
API reference
GET /v1/bg/offering
Try on playgroundReturns a realistic synthetic Bulgarian offering — a product or service with a localized name, a plausible EUR price, its unit, and its industry label. Pin `industry` (NACE code), `type` (product/service), or filter by `industryName`/`offeringName` full text. Set `edge=true` for the price/format corners, `extreme=true` for a hostile-encoded name, or `invalid=true` for a broken record.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict to edge-case offerings (price-band extremes, unusual units, long names). |
| extreme | boolean | Return a correct offering whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, homoglyphs, or bidi marks). Price, unit and industry label stay clean. |
| industry | "73" | "28.3" | "93.2" | "71" | "90" | "29.3" | "10.7" | "64" | "56.30" | "11" | "30.1" | "47.6" | "26.7" | "95.3" | "56.21" | "23.4" | "81.2" | "14" | "95.1" | "26.2" | "41" | "70" | "26.4" | "49.4" | "10.5" | "74.1" | "85" | "43.2" | "82.3" | "59" | "56.12" | "31" | "92" | "81.3" | "23.1" | "47.1" | "96.2" | "27.5" | "86.1" | "55" | "65" | "32.1" | "96.1" | "15" | "69" | "86.2" | "91.2" | "32.2" | "21" | "74.2" | "58" | "68" | "78" | "43.3" | "77" | "56.11" | "80" | "62" | "10.8" | "93.1" | "32.3" | "61" | "13" | "32.4" | "74.3" | "79" | "75" | "63" | "16" | Pin the industry by NACE code. Omit to draw across all covered industries. |
| industryName | string | Full-text filter: keep offerings whose localized industry label contains this. |
| invalid | boolean | Return a deliberately invalid offering (a price outside its band, a negative price, or an empty name) for negative-path testing. Cannot combine with edge/extreme. |
| language | "bg" | Pin the name language. Omit for the country’s weighted mix. |
| offeringName | string | Full-text filter: keep offerings whose localized name contains this. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "product" | "service" | Restrict to products or services. Omit for both. |
Request
curl https://api.real-fake-data.com/v1/bg/offeringResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The offering name in the resolved language. |
| offeringName | string | The full offering name (alias of `value`). |
| kind | "product" | "service" | Whether it is a good or a rendered service. |
| unit | string | The unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …). |
| price | integer | A single plausible price, in EUR minor units (cents). |
| currency | "EUR" | Currency of `price`; always EUR. |
| industryCode | string | NACE Rev. 2.1 code of the offering’s industry. |
| industryName | string | The localized industry label in the resolved language. |
| language | string | BCP-47 subtag used for this record’s names. |
API reference
GET /v1/bg/vehicle-registration
Try on playgroundReturns a realistic Bulgarian vehicle registration plate. `type` selects the kind: `standard` (default, `L(L) NNNN LL`, e.g. CB 4821 KH), `custom` (vanity tail, same shape), `motorcycle` (`L(L) NNNN L`), `military` (`BA NNN NNN`, no province), `diplomatic` (Sofia `C`/`CC`/`CT` blocks), `electric` (`EA NNNN LL`), or `temporary` (`NNN L NNN`). Real plates are Cyrillic but restricted to the twelve Latin-lookalike glyphs, so `script` emits the interoperable `latin` form (default) or the real Cyrillic (`native`). Region-encoding types can be pinned to a province via `province` (an unknown name is a 400). No plate carries a checksum, so there is no `invalid` variant. Use `format` to choose spaced or compact rendering.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case plates from the rare corners of the format. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "with-space" | "compact" | Plate rendering: with a space or compact. Default with-space. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| province | string | Pin the province (област) whose code opens the plate (e.g. Plovdiv, Sofia (city)). Region-encoding types only. |
| script | "latin" | "native" | Letter script: latin-lookalike glyphs (default) or real Cyrillic (native). |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "standard" | "custom" | "motorcycle" | "military" | "diplomatic" | "electric" | "temporary" | Plate kind: standard, custom (vanity), motorcycle, military, diplomatic, electric, or temporary. |
Request
curl https://api.real-fake-data.com/v1/bg/vehicle-registrationResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The plate in the requested script and format, e.g. "CB 4821 KH". |
| type | "standard" | "custom" | "motorcycle" | "military" | "diplomatic" | "electric" | "temporary" | Which kind of plate this is. |
| provinceoptional | string | The province (област) whose code opens the plate; present only for region-encoding types. |
| provinceCodeoptional | string | The Latin-lookalike province code that opens the plate; present alongside province. |
API reference
POST /v1/compose
Try on playgroundTakes a JSON skeleton whose fields are marked with `$`-sources (`$generator.*`, `$alias.*`, `$shared.*`, `$date.*`) and returns the same skeleton filled with mutually consistent, valid values — a whole record in one request, for mock servers and DB seeding. `$count` turns a node into an array; `$generators` / `shared` keep several fields describing the same entity; `$anchor` relates dates across a record. Deterministic when a `seed` is given. Requires the Pro plan. See the request-shape guide for the full grammar.
Query parameters
This endpoint takes no parameters.
Request
curl https://api.real-fake-data.com/v1/composeAPI reference
GET /v1/hr/company
Try on playgroundReturns a consistent synthetic Croatian company in one call: a full trading name with its legal form, plus the matching oib. Shape the name with `strategy` and `legalForm` (as on `/v1/hr/company-name`). Set `invalid=true` to corrupt the checksummed identifiers (the name stays intact), for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case values from the rare corners. |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Corrupt the checksummed identifiers, for testing validators. |
| legalForm | "any" | "none" | "d.o.o." | "j.d.o.o." | "d.d." | "obrt" | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family for the company name. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/hr/companyResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form, or `null` when none was added. |
| oib | string | The matching oib identifier. |
API reference
GET /v1/hr/company-name
Try on playgroundReturns a realistic synthetic Croatian company name across the naming families (coined, owner-surname, descriptive, modern), with an optional trailing legal form in its authentic local form. Pin `strategy` or `legalForm`, set `legalForm=none` to omit it, or `edge=true` for the punctuation-heavy / long-form corners.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case names (punctuation-heavy families, long/rare forms). |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| legalForm | "any" | "none" | "d.o.o." | "j.d.o.o." | "d.d." | "obrt" | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/hr/company-nameResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form (e.g. `GmbH`, `S.r.l.`), or `null` when none was added. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Which naming family produced the name. |
API reference
GET /v1/hr/email
Try on playgroundReturns a realistic synthetic Croatian email address: a name-based local part (romanised to ASCII) on a free webmail, a Croatian regional provider, or a corporate domain built from a Croatian company brand. `domain` pins an exact domain; `domainCategory` (`free`/`regional`/`corporate`/`any`) scopes a weighted-random draw. `pattern` selects the local-part shape or `any`. `plusTag` controls plus-addressing; `exotic=true` allows the rarer RFC-valid characters.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| domain | stringpattern ^[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ | Pin an exact domain, e.g. "gmail.com". Overrides domainCategory. |
| domainCategory | "free" | "regional" | "corporate" | "any" | Scope the random domain draw: free webmail, regional providers, corporate domains, or any. |
| edge | boolean | Restrict output to edge-case addresses from the rare corners of the format. |
| exotic | boolean | Allow rarer RFC-valid local-part characters (%, =, ~). Off by default. |
| extreme | boolean | Return a correct address whose value is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). localPart, domain, and the decomposition stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | "any" | Local-part shape, e.g. "first.last"; "any" picks a weighted-random one. |
| plusTag | stringpattern ^[A-Za-z0-9_-]+$ | Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/hr/emailResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full email address, e.g. "anna.schmidt+news@mueller-bau.de". |
| localPart | string | The part before the `@`, including any plus tag. |
| domain | string | The domain, e.g. "gmail.com", "wp.pl", or "mueller-bau.de". |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | Which local-part pattern produced the address. |
| domainCategory | "free" | "regional" | "corporate" | Whether the domain is free, regional, or corporate. |
| company | string | The company name a corporate domain or company local-part was derived from, or `null`. |
| plusTag | string | The plus-addressing tag, or `null` when none. |
API reference
GET /v1/hr/iban
Try on playgroundReturns a valid Croatian IBAN with a correct checksum. Pin the issuing bank with `bankCode` (7-digit VBDI code) or `bankName` (mutually exclusive), or let it be chosen at random. Set `invalid=true` to get an IBAN with deliberately wrong check digits, for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| bankCode | string | Pin the issuing bank by its 7-digit VBDI code. Mutually exclusive with bankName. |
| bankName | string | Pin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case IBANs from the rare corners of the format. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "grouped" | "compact" | IBAN rendering: grouped or compact. Default grouped. |
| invalid | boolean | Return an IBAN with deliberately wrong check digits, for testing validators. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/hr/ibanResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The IBAN in the requested format. |
| electronicFormat | string | The space-free electronic form of the IBAN. |
| bankCode | string | The bank identifier embedded in the IBAN. |
| bankName | string | Human-readable name of the issuing bank. |
API reference
GET /v1/hr/jmbg
Try on playgroundReturns a historically well-formed Croatian JMBG (replaced by the OIB in 2009) with a correct mod-11 check. Constrain with `sex` and age/birth-date filters; the JMBG encodes the full birth date. Contradictory combinations are rejected with a 400. Set `invalid=true` for a deliberately failing check.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| atAge | integer | Exact age in years at request time. |
| bornAfter | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornBefore | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornOn | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case values. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| invalid | boolean | Return a JMBG with a deliberately failing mod-11 check; birth date/sex stay valid. |
| olderThan | integer | Minimum age in years at request time. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Encoded sex: "m" or "f". |
| youngerThan | integer | Maximum age in years at request time. |
Request
curl https://api.real-fake-data.com/v1/hr/jmbgResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The 13-digit JMBG. |
| digits | string | The canonical 13-digit JMBG. |
| birthDate | string | The encoded birth date, ISO `YYYY-MM-DD`. |
| sex | "m" | "f" | Encoded sex: `m` (serial 000–499) or `f` (serial 500–999). |
API reference
GET /v1/hr/oib
Try on playgroundReturns a valid Croatian OIB (the single identifier for both persons and companies) with a correct ISO 7064 MOD 11,10 check digit. Use `format` for the HR VAT number. Set `invalid=true` for an OIB with a deliberately wrong check digit.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case OIBs from the rare corners. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "national" | "vat" | Rendering: bare 11-digit OIB (default), or HR-prefixed VAT number. |
| invalid | boolean | Return an OIB with a deliberately wrong ISO 7064 check digit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/hr/oibResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The OIB in the requested format (national or VAT). |
| digits | string | The canonical, unprefixed 11-digit OIB. |
API reference
GET /v1/hr/person
Try on playgroundReturns a synthetic Croatian person: given name(s), surname, initials, birth date, and the matching JMBG. Constrain with `sex` and age/birth-date filters (contradictory combinations are rejected with a 400). Set `invalid=true` for a deliberately wrong check value, `edge=true` for rare-corner values, and `caseStrict=false` to mangle the name casing.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| atAge | integer | Exact age in years at request time. |
| bornAfter | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornBefore | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornOn | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD. |
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname; initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias the number and name shape toward their rarely-exercised corners. |
| extreme | boolean | Return a correct person whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials, birthDate, and the national identifier stay clean. |
| invalid | boolean | Return a person whose JMBG has a deliberately wrong check value. |
| olderThan | integer | Minimum age in years at request time. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Encoded sex: "m" or "f". |
| youngerThan | integer | Maximum age in years at request time. |
Request
curl https://api.real-fake-data.com/v1/hr/personResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s). |
| surname | string | Surname. |
| initials | string | Uppercase initials of name and surname, no dots. |
| birthDate | string | The birth date, ISO `YYYY-MM-DD`. |
| jmbg | string | The matching JMBG. |
API reference
GET /v1/hr/person-name
Try on playgroundReturns a realistic synthetic Croatian person name: given name(s), surname, and initials, in the local script. Use `sex` to pin the gendered form (`m`/`f`) or omit it for a random one. `edge=true` biases the name shape — second given names, double-barrelled surnames, and very short names become far more likely. Set `caseStrict=false` to deliberately mangle the name/surname casing (initials stay proper uppercase).
Query parameters
| Parameter | Type | Description |
|---|---|---|
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname (all-lower, all-upper, or random); initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias toward edge-case name shapes (second given names, double surnames, short names). |
| extreme | boolean | Return a correct name whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Gendered form of the name: "m" or "f". Omit for random. |
Request
curl https://api.real-fake-data.com/v1/hr/person-nameResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s), in the local script, agreeing with the reported sex. |
| surname | string | Surname in the form matching the sex (inflected where the language requires it). |
| initials | string | Uppercase initials of name and surname, no dots, e.g. `JK`. |
| sex | "m" | "f" | The sex the name was inflected for. |
API reference
GET /v1/hr/offering
Try on playgroundReturns a realistic synthetic Croatian offering — a product or service with a localized name, a plausible EUR price, its unit, and its industry label. Pin `industry` (NACE code), `type` (product/service), or filter by `industryName`/`offeringName` full text. Set `edge=true` for the price/format corners, `extreme=true` for a hostile-encoded name, or `invalid=true` for a broken record.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict to edge-case offerings (price-band extremes, unusual units, long names). |
| extreme | boolean | Return a correct offering whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, homoglyphs, or bidi marks). Price, unit and industry label stay clean. |
| industry | "73" | "28.3" | "93.2" | "71" | "90" | "29.3" | "10.7" | "64" | "56.30" | "11" | "30.1" | "47.6" | "26.7" | "95.3" | "56.21" | "23.4" | "81.2" | "14" | "95.1" | "26.2" | "41" | "70" | "26.4" | "49.4" | "10.5" | "74.1" | "85" | "43.2" | "82.3" | "59" | "56.12" | "31" | "92" | "81.3" | "23.1" | "47.1" | "96.2" | "27.5" | "86.1" | "55" | "65" | "32.1" | "96.1" | "15" | "69" | "86.2" | "91.2" | "32.2" | "21" | "74.2" | "58" | "68" | "78" | "43.3" | "77" | "56.11" | "80" | "62" | "10.8" | "93.1" | "32.3" | "61" | "13" | "32.4" | "74.3" | "79" | "75" | "63" | "16" | Pin the industry by NACE code. Omit to draw across all covered industries. |
| industryName | string | Full-text filter: keep offerings whose localized industry label contains this. |
| invalid | boolean | Return a deliberately invalid offering (a price outside its band, a negative price, or an empty name) for negative-path testing. Cannot combine with edge/extreme. |
| language | "hr" | Pin the name language. Omit for the country’s weighted mix. |
| offeringName | string | Full-text filter: keep offerings whose localized name contains this. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "product" | "service" | Restrict to products or services. Omit for both. |
Request
curl https://api.real-fake-data.com/v1/hr/offeringResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The offering name in the resolved language. |
| offeringName | string | The full offering name (alias of `value`). |
| kind | "product" | "service" | Whether it is a good or a rendered service. |
| unit | string | The unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …). |
| price | integer | A single plausible price, in EUR minor units (cents). |
| currency | "EUR" | Currency of `price`; always EUR. |
| industryCode | string | NACE Rev. 2.1 code of the offering’s industry. |
| industryName | string | The localized industry label in the resolved language. |
| language | string | BCP-47 subtag used for this record’s names. |
API reference
GET /v1/hr/vehicle-registration
Try on playgroundReturns a realistic Croatian vehicle registration plate. `type` selects the kind: `standard` (default, `LL NNN(N)-L(L)`, e.g. ZG 123-AB), `custom` (vanity word plate), `military` (`HV NNN-L(L)`), `diplomatic` (`NNN-X-NNN`), `export` (`RH NNNN-L`), `historic` (`LL-PV-NNN`), or `motorcycle`. The region-coded types (standard, custom, motorcycle) carry a real two-letter city code and can be pinned to an issuing city via `city` (diacritic-sensitive; an unknown city is a 400). No Croatian plate carries a checksum, so there is no `invalid` variant. Use `format` to choose spaced or compact rendering.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| city | string | Restrict a region-coded plate (standard, custom, motorcycle) to a city by name (e.g. Zagreb, Split). Diacritic-sensitive; an unknown city is a 400. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case plates from the rare corners of the format. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "with-space" | "compact" | Plate rendering: with a space or compact. Default with-space. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "standard" | "custom" | "military" | "diplomatic" | "export" | "historic" | "motorcycle" | Plate kind: standard, custom, military, diplomatic, export, historic, or motorcycle. |
Request
curl https://api.real-fake-data.com/v1/hr/vehicle-registrationResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The plate in the requested format, e.g. "ZG 123-AB" or "ZG123AB". |
| type | "standard" | "custom" | "military" | "diplomatic" | "export" | "historic" | "motorcycle" | Which kind of plate this is. |
| cityoptional | string | The issuing city for the plate code (e.g. Zagreb for ZG); present only for the region-coded types (standard, custom, motorcycle). |
API reference
GET /v1/cy/company
Try on playgroundReturns a consistent synthetic Cypriot company in one call: a full trading name with its legal form, plus the matching tic. Shape the name with `strategy` and `legalForm` (as on `/v1/cy/company-name`). Set `invalid=true` to corrupt the checksummed identifiers (the name stays intact), for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case values from the rare corners. |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Corrupt the checksummed identifiers, for testing validators. |
| legalForm | "any" | "none" | "Λτδ" | "Δημόσια Λτδ" | "Ο.Ε." | "Ε.Ε." | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family for the company name. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/cy/companyResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form, or `null` when none was added. |
| tic | string | The matching tic identifier. |
API reference
GET /v1/cy/company-name
Try on playgroundReturns a realistic synthetic Cypriot company name across the naming families (coined, owner-surname, descriptive, modern), with an optional trailing legal form in its authentic local form. Pin `strategy` or `legalForm`, set `legalForm=none` to omit it, or `edge=true` for the punctuation-heavy / long-form corners.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case names (punctuation-heavy families, long/rare forms). |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| legalForm | "any" | "none" | "Λτδ" | "Δημόσια Λτδ" | "Ο.Ε." | "Ε.Ε." | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/cy/company-nameResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form (e.g. `GmbH`, `S.r.l.`), or `null` when none was added. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Which naming family produced the name. |
API reference
GET /v1/cy/email
Try on playgroundReturns a realistic synthetic Cypriot email address: a name-based local part (romanised to ASCII) on a free webmail, a Cypriot regional provider, or a corporate domain built from a Cypriot company brand. `domain` pins an exact domain; `domainCategory` (`free`/`regional`/`corporate`/`any`) scopes a weighted-random draw. `pattern` selects the local-part shape or `any`. `plusTag` controls plus-addressing; `exotic=true` allows the rarer RFC-valid characters.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| domain | stringpattern ^[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ | Pin an exact domain, e.g. "gmail.com". Overrides domainCategory. |
| domainCategory | "free" | "regional" | "corporate" | "any" | Scope the random domain draw: free webmail, regional providers, corporate domains, or any. |
| edge | boolean | Restrict output to edge-case addresses from the rare corners of the format. |
| exotic | boolean | Allow rarer RFC-valid local-part characters (%, =, ~). Off by default. |
| extreme | boolean | Return a correct address whose value is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). localPart, domain, and the decomposition stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | "any" | Local-part shape, e.g. "first.last"; "any" picks a weighted-random one. |
| plusTag | stringpattern ^[A-Za-z0-9_-]+$ | Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/cy/emailResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full email address, e.g. "anna.schmidt+news@mueller-bau.de". |
| localPart | string | The part before the `@`, including any plus tag. |
| domain | string | The domain, e.g. "gmail.com", "wp.pl", or "mueller-bau.de". |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | Which local-part pattern produced the address. |
| domainCategory | "free" | "regional" | "corporate" | Whether the domain is free, regional, or corporate. |
| company | string | The company name a corporate domain or company local-part was derived from, or `null`. |
| plusTag | string | The plus-addressing tag, or `null` when none. |
API reference
GET /v1/cy/iban
Try on playgroundReturns a valid Cypriot IBAN with a correct checksum. Pin the issuing bank with `bankCode` (3-digit bank code) or `bankName` (mutually exclusive), or let it be chosen at random. Set `invalid=true` to get an IBAN with deliberately wrong check digits, for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| bankCode | string | Pin the issuing bank by its 3-digit bank code. Mutually exclusive with bankName. |
| bankName | string | Pin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case IBANs from the rare corners of the format. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "grouped" | "compact" | IBAN rendering: grouped or compact. Default grouped. |
| invalid | boolean | Return an IBAN with deliberately wrong check digits, for testing validators. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/cy/ibanResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The IBAN in the requested format. |
| electronicFormat | string | The space-free electronic form of the IBAN. |
| bankCode | string | The bank identifier embedded in the IBAN. |
| bankName | string | Human-readable name of the issuing bank. |
API reference
GET /v1/cy/person
Try on playgroundReturns a synthetic Cypriot person: given name(s), surname, initials, birth date, and the matching TIC. Constrain with `sex` and age/birth-date filters (contradictory combinations are rejected with a 400). Set `invalid=true` for a deliberately wrong check value, `edge=true` for rare-corner values, and `caseStrict=false` to mangle the name casing.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| atAge | integer | Exact age in years at request time. |
| bornAfter | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornBefore | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornOn | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD. |
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname; initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias the number and name shape toward their rarely-exercised corners. |
| extreme | boolean | Return a correct person whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials, birthDate, and the national identifier stay clean. |
| invalid | boolean | Return a person whose TIC has a deliberately wrong check value. |
| olderThan | integer | Minimum age in years at request time. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Encoded sex: "m" or "f". |
| youngerThan | integer | Maximum age in years at request time. |
Request
curl https://api.real-fake-data.com/v1/cy/personResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s). |
| surname | string | Surname. |
| initials | string | Uppercase initials of name and surname, no dots. |
| birthDate | string | The birth date, ISO `YYYY-MM-DD`. |
| tic | string | The matching TIC. |
API reference
GET /v1/cy/person-name
Try on playgroundReturns a realistic synthetic Cypriot person name: given name(s), surname, and initials, in the local script. Use `sex` to pin the gendered form (`m`/`f`) or omit it for a random one. `edge=true` biases the name shape — second given names, double-barrelled surnames, and very short names become far more likely. Set `caseStrict=false` to deliberately mangle the name/surname casing (initials stay proper uppercase).
Query parameters
| Parameter | Type | Description |
|---|---|---|
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname (all-lower, all-upper, or random); initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias toward edge-case name shapes (second given names, double surnames, short names). |
| extreme | boolean | Return a correct name whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Gendered form of the name: "m" or "f". Omit for random. |
Request
curl https://api.real-fake-data.com/v1/cy/person-nameResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s), in the local script, agreeing with the reported sex. |
| surname | string | Surname in the form matching the sex (inflected where the language requires it). |
| initials | string | Uppercase initials of name and surname, no dots, e.g. `JK`. |
| sex | "m" | "f" | The sex the name was inflected for. |
API reference
GET /v1/cy/offering
Try on playgroundReturns a realistic synthetic Cypriot offering — a product or service with a localized name, a plausible EUR price, its unit, and its industry label. Pin `industry` (NACE code), `type` (product/service), or filter by `industryName`/`offeringName` full text. Set `edge=true` for the price/format corners, `extreme=true` for a hostile-encoded name, or `invalid=true` for a broken record.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict to edge-case offerings (price-band extremes, unusual units, long names). |
| extreme | boolean | Return a correct offering whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, homoglyphs, or bidi marks). Price, unit and industry label stay clean. |
| industry | "73" | "28.3" | "93.2" | "71" | "90" | "29.3" | "10.7" | "64" | "56.30" | "11" | "30.1" | "47.6" | "26.7" | "95.3" | "56.21" | "23.4" | "81.2" | "14" | "95.1" | "26.2" | "41" | "70" | "26.4" | "49.4" | "10.5" | "74.1" | "85" | "43.2" | "82.3" | "59" | "56.12" | "31" | "92" | "81.3" | "23.1" | "47.1" | "96.2" | "27.5" | "86.1" | "55" | "65" | "32.1" | "96.1" | "15" | "69" | "86.2" | "91.2" | "32.2" | "21" | "74.2" | "58" | "68" | "78" | "43.3" | "77" | "56.11" | "80" | "62" | "10.8" | "93.1" | "32.3" | "61" | "13" | "32.4" | "74.3" | "79" | "75" | "63" | "16" | Pin the industry by NACE code. Omit to draw across all covered industries. |
| industryName | string | Full-text filter: keep offerings whose localized industry label contains this. |
| invalid | boolean | Return a deliberately invalid offering (a price outside its band, a negative price, or an empty name) for negative-path testing. Cannot combine with edge/extreme. |
| language | "el" | Pin the name language. Omit for the country’s weighted mix. |
| offeringName | string | Full-text filter: keep offerings whose localized name contains this. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "product" | "service" | Restrict to products or services. Omit for both. |
Request
curl https://api.real-fake-data.com/v1/cy/offeringResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The offering name in the resolved language. |
| offeringName | string | The full offering name (alias of `value`). |
| kind | "product" | "service" | Whether it is a good or a rendered service. |
| unit | string | The unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …). |
| price | integer | A single plausible price, in EUR minor units (cents). |
| currency | "EUR" | Currency of `price`; always EUR. |
| industryCode | string | NACE Rev. 2.1 code of the offering’s industry. |
| industryName | string | The localized industry label in the resolved language. |
| language | string | BCP-47 subtag used for this record’s names. |
API reference
GET /v1/cy/vehicle-registration
Try on playgroundReturns a realistic Cypriot vehicle registration plate. `type` selects the kind: `standard` (default, national sequential `LLL NNN`, e.g. KAB 417), `motorcycle` (reuses the standard mask), `diplomatic` (`NN CD NNN`), `trailer` (`P00 NNN`), `un` (`UN-NNN`), or `sba` (`SBAA-NN`). Cyprus encodes no region, issues no vanity plates, and no plate carries a checksum, so there is no `invalid` variant. Use `format` to choose spaced or compact rendering (ignored for `un`/`sba`, whose hyphen is intrinsic).
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case plates from the rare corners of the format. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "with-space" | "compact" | Plate rendering: with a space or compact. Default with-space. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "standard" | "motorcycle" | "diplomatic" | "trailer" | "un" | "sba" | Plate kind: standard, motorcycle, diplomatic, trailer, un, or sba. |
Request
curl https://api.real-fake-data.com/v1/cy/vehicle-registrationResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The plate in the requested format, e.g. "KAB 417". |
| type | "standard" | "motorcycle" | "diplomatic" | "trailer" | "un" | "sba" | Which kind of plate this is. |
API reference
GET /v1/cy/tic
Try on playgroundReturns a valid Cyprus TIC (Tax Identification Code) — 8 digits plus a correct check letter. Use `format=vat` for the CY VAT number (`CY` + TIC). Set `invalid=true` for a TIC with a deliberately wrong check letter.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case TICs from the rare corners. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "national" | "vat" | Rendering: bare national TIC (default) or CY VAT number. |
| invalid | boolean | Return a TIC with a deliberately wrong check letter. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/cy/ticResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The TIC in the requested format (national or CY VAT). |
| digits | string | The canonical 8-digit body. |
| letter | string | The single check letter derived from the digits. |
API reference
GET /v1/cz/company
Try on playgroundReturns a consistent synthetic Czech company in one call: a full trading name with its legal form, plus the matching ico. Shape the name with `strategy` and `legalForm` (as on `/v1/cz/company-name`). Set `invalid=true` to corrupt the checksummed identifiers (the name stays intact), for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case values from the rare corners. |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Corrupt the checksummed identifiers, for testing validators. |
| legalForm | "any" | "none" | "s.r.o." | "a.s." | "v.o.s." | "k.s." | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family for the company name. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/cz/companyResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form, or `null` when none was added. |
| ico | string | The matching ico identifier. |
API reference
GET /v1/cz/company-name
Try on playgroundReturns a realistic synthetic Czech company name across the naming families (coined, owner-surname, descriptive, modern), with an optional trailing legal form in its authentic local form. Pin `strategy` or `legalForm`, set `legalForm=none` to omit it, or `edge=true` for the punctuation-heavy / long-form corners.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case names (punctuation-heavy families, long/rare forms). |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| legalForm | "any" | "none" | "s.r.o." | "a.s." | "v.o.s." | "k.s." | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/cz/company-nameResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form (e.g. `GmbH`, `S.r.l.`), or `null` when none was added. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Which naming family produced the name. |
API reference
GET /v1/cz/email
Try on playgroundReturns a realistic synthetic Czech email address: a name-based local part (romanised to ASCII) on a free webmail, a Czech regional provider, or a corporate domain built from a Czech company brand. `domain` pins an exact domain; `domainCategory` (`free`/`regional`/`corporate`/`any`) scopes a weighted-random draw. `pattern` selects the local-part shape or `any`. `plusTag` controls plus-addressing; `exotic=true` allows the rarer RFC-valid characters.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| domain | stringpattern ^[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ | Pin an exact domain, e.g. "gmail.com". Overrides domainCategory. |
| domainCategory | "free" | "regional" | "corporate" | "any" | Scope the random domain draw: free webmail, regional providers, corporate domains, or any. |
| edge | boolean | Restrict output to edge-case addresses from the rare corners of the format. |
| exotic | boolean | Allow rarer RFC-valid local-part characters (%, =, ~). Off by default. |
| extreme | boolean | Return a correct address whose value is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). localPart, domain, and the decomposition stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | "any" | Local-part shape, e.g. "first.last"; "any" picks a weighted-random one. |
| plusTag | stringpattern ^[A-Za-z0-9_-]+$ | Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/cz/emailResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full email address, e.g. "anna.schmidt+news@mueller-bau.de". |
| localPart | string | The part before the `@`, including any plus tag. |
| domain | string | The domain, e.g. "gmail.com", "wp.pl", or "mueller-bau.de". |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | Which local-part pattern produced the address. |
| domainCategory | "free" | "regional" | "corporate" | Whether the domain is free, regional, or corporate. |
| company | string | The company name a corporate domain or company local-part was derived from, or `null`. |
| plusTag | string | The plus-addressing tag, or `null` when none. |
API reference
GET /v1/cz/iban
Try on playgroundReturns a valid Czech IBAN with a correct checksum. Pin the issuing bank with `bankCode` (4-digit bank code) or `bankName` (mutually exclusive), or let it be chosen at random. Set `invalid=true` to get an IBAN with deliberately wrong check digits, for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| bankCode | string | Pin the issuing bank by its 4-digit bank code. Mutually exclusive with bankName. |
| bankName | string | Pin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case IBANs from the rare corners of the format. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "grouped" | "compact" | IBAN rendering: grouped or compact. Default grouped. |
| invalid | boolean | Return an IBAN with deliberately wrong check digits, for testing validators. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/cz/ibanResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The IBAN in the requested format. |
| electronicFormat | string | The space-free electronic form of the IBAN. |
| bankCode | string | The bank identifier embedded in the IBAN. |
| bankName | string | Human-readable name of the issuing bank. |
API reference
GET /v1/cz/ico
Try on playgroundReturns a valid Czech IČO (business identification number) with a correct mod-11 check digit. Use `format=vat` for the `CZ`-prefixed VAT number (DIČ). Set `invalid=true` for an IČO with a deliberately wrong check digit.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case IČO numbers from the rare corners. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "national" | "vat" | Rendering: bare 8-digit IČO (default) or the `CZ`-prefixed VAT form. |
| invalid | boolean | Return an IČO with a deliberately wrong mod-11 check digit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/cz/icoResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The identifier in the requested format (national IČO or VAT). |
| digits | string | The canonical, unprefixed 8-digit IČO. |
API reference
GET /v1/cz/person
Try on playgroundReturns a synthetic Czech person: given name(s), surname, initials, birth date, and the matching rodné číslo. Constrain with `sex` and age/birth-date filters (contradictory combinations are rejected with a 400). Set `invalid=true` for a deliberately wrong check value, `edge=true` for rare-corner values, and `caseStrict=false` to mangle the name casing.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| atAge | integer | Exact age in years at request time. |
| bornAfter | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornBefore | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornOn | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD. |
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname; initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias the number and name shape toward their rarely-exercised corners. |
| extreme | boolean | Return a correct person whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials, birthDate, and the national identifier stay clean. |
| invalid | boolean | Return a person whose rodné číslo has a deliberately wrong check value. |
| olderThan | integer | Minimum age in years at request time. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Encoded sex: "m" or "f". |
| youngerThan | integer | Maximum age in years at request time. |
Request
curl https://api.real-fake-data.com/v1/cz/personResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s). |
| surname | string | Surname. |
| initials | string | Uppercase initials of name and surname, no dots. |
| birthDate | string | The birth date, ISO `YYYY-MM-DD`. |
| rodneCislo | string | The matching rodné číslo. |
API reference
GET /v1/cz/person-name
Try on playgroundReturns a realistic synthetic Czech person name: given name(s), surname, and initials, in the local script. Use `sex` to pin the gendered form (`m`/`f`) or omit it for a random one. `edge=true` biases the name shape — second given names, double-barrelled surnames, and very short names become far more likely. Set `caseStrict=false` to deliberately mangle the name/surname casing (initials stay proper uppercase).
Query parameters
| Parameter | Type | Description |
|---|---|---|
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname (all-lower, all-upper, or random); initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias toward edge-case name shapes (second given names, double surnames, short names). |
| extreme | boolean | Return a correct name whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Gendered form of the name: "m" or "f". Omit for random. |
Request
curl https://api.real-fake-data.com/v1/cz/person-nameResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s), in the local script, agreeing with the reported sex. |
| surname | string | Surname in the form matching the sex (inflected where the language requires it). |
| initials | string | Uppercase initials of name and surname, no dots, e.g. `JK`. |
| sex | "m" | "f" | The sex the name was inflected for. |
API reference
GET /v1/cz/offering
Try on playgroundReturns a realistic synthetic Czech offering — a product or service with a localized name, a plausible EUR price, its unit, and its industry label. Pin `industry` (NACE code), `type` (product/service), or filter by `industryName`/`offeringName` full text. Set `edge=true` for the price/format corners, `extreme=true` for a hostile-encoded name, or `invalid=true` for a broken record.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict to edge-case offerings (price-band extremes, unusual units, long names). |
| extreme | boolean | Return a correct offering whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, homoglyphs, or bidi marks). Price, unit and industry label stay clean. |
| industry | "73" | "28.3" | "93.2" | "71" | "90" | "29.3" | "10.7" | "64" | "56.30" | "11" | "30.1" | "47.6" | "26.7" | "95.3" | "56.21" | "23.4" | "81.2" | "14" | "95.1" | "26.2" | "41" | "70" | "26.4" | "49.4" | "10.5" | "74.1" | "85" | "43.2" | "82.3" | "59" | "56.12" | "31" | "92" | "81.3" | "23.1" | "47.1" | "96.2" | "27.5" | "86.1" | "55" | "65" | "32.1" | "96.1" | "15" | "69" | "86.2" | "91.2" | "32.2" | "21" | "74.2" | "58" | "68" | "78" | "43.3" | "77" | "56.11" | "80" | "62" | "10.8" | "93.1" | "32.3" | "61" | "13" | "32.4" | "74.3" | "79" | "75" | "63" | "16" | Pin the industry by NACE code. Omit to draw across all covered industries. |
| industryName | string | Full-text filter: keep offerings whose localized industry label contains this. |
| invalid | boolean | Return a deliberately invalid offering (a price outside its band, a negative price, or an empty name) for negative-path testing. Cannot combine with edge/extreme. |
| language | "cs" | Pin the name language. Omit for the country’s weighted mix. |
| offeringName | string | Full-text filter: keep offerings whose localized name contains this. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "product" | "service" | Restrict to products or services. Omit for both. |
Request
curl https://api.real-fake-data.com/v1/cz/offeringResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The offering name in the resolved language. |
| offeringName | string | The full offering name (alias of `value`). |
| kind | "product" | "service" | Whether it is a good or a rendered service. |
| unit | string | The unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …). |
| price | integer | A single plausible price, in EUR minor units (cents). |
| currency | "EUR" | Currency of `price`; always EUR. |
| industryCode | string | NACE Rev. 2.1 code of the offering’s industry. |
| industryName | string | The localized industry label in the resolved language. |
| language | string | BCP-47 subtag used for this record’s names. |
API reference
GET /v1/cz/rodne-cislo
Try on playgroundReturns a valid Czech rodné číslo (birth number) divisible by 11. Constrain with `sex` and age/birth-date filters (the full birth date is encoded). Contradictory combinations are rejected with a 400. Use `format` for the `YYMMDD/SSSC` slash rendering. Set `invalid=true` for a deliberately wrong divisibility check.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| atAge | integer | Exact age in years at request time. |
| bornAfter | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornBefore | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornOn | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case values. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "plain" | "with-slash" | Rendering: bare 10 digits (default) or the `YYMMDD/SSSC` slash form. |
| invalid | boolean | Return a rodné číslo that fails the divisible-by-11 check; date/sex stay valid. |
| olderThan | integer | Minimum age in years at request time. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Encoded sex: "m" or "f". |
| youngerThan | integer | Maximum age in years at request time. |
Request
curl https://api.real-fake-data.com/v1/cz/rodne-cisloResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The rodné číslo in the requested format (plain or `YYMMDD/SSSC`). |
| digits | string | The canonical 10-digit rodné číslo. |
| birthDate | string | The encoded birth date, ISO `YYYY-MM-DD`. |
| sex | "m" | "f" | Encoded sex: `m` (month 01–12) or `f` (month 51–62). |
API reference
GET /v1/cz/vehicle-registration
Try on playgroundReturns a realistic Czech vehicle registration plate. `type` selects the kind: `standard` (default, `NLN NNNN`, e.g. 1A2 3456, whose second character encodes the region/kraj), `extended` (`NLL NNNN` two-letter overflow), `custom` (2016+ vanity), `motorcycle`, `diplomatic` (CD), `historic` (V marker), `electric` (EL prefix), or `military` (digits only). `region` restricts a standard/extended plate to a named kraj (e.g. Prague, South Moravia); an unknown kraj is a 400, and the filter is ignored for the region-agnostic classes. Czech plates carry no checksum, so there is no invalid variant. Use `format` to choose spaced or compact rendering.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case plates from the rare corners of the format. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "with-space" | "compact" | Plate rendering: with a space or compact. Default with-space. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| region | string | Restrict a standard/extended plate to a named kraj (e.g. Prague, South Moravia). An unknown kraj is a 400; ignored for region-agnostic types. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "standard" | "extended" | "custom" | "motorcycle" | "diplomatic" | "historic" | "electric" | "military" | Plate kind: standard, extended, custom, motorcycle, diplomatic, historic, electric, or military. |
Request
curl https://api.real-fake-data.com/v1/cz/vehicle-registrationResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The plate in the requested format, e.g. "1A2 3456". |
| type | "standard" | "extended" | "custom" | "motorcycle" | "diplomatic" | "historic" | "electric" | "military" | Which kind of plate this is. |
| regionoptional | string | Full name of the kraj whose letter sits in the plate; present only for the region-encoding types (standard, extended). |
API reference
GET /v1/dk/company
Try on playgroundReturns a consistent synthetic Danish company in one call: a full trading name with its legal form, plus the matching CVR number. Shape the name with `strategy` and `legalForm` (as on `/v1/dk/company-name`). Set `invalid=true` to corrupt the CVR check digit (the name stays intact), for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case values from the rare corners. |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Corrupt the CVR check digit, for testing validators. |
| legalForm | "any" | "none" | "ApS" | "A/S" | "I/S" | "K/S" | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family for the company name. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/dk/companyResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form, or `null` when none was added. |
| cvr | string | The matching 8-digit CVR number. |
API reference
GET /v1/dk/company-name
Try on playgroundReturns a realistic synthetic Danish company name across the naming families (coined, owner-surname, descriptive, modern), with an optional trailing legal form in its authentic local form. Pin `strategy` or `legalForm`, set `legalForm=none` to omit it, or `edge=true` for the punctuation-heavy / long-form corners.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case names (punctuation-heavy families, long/rare forms). |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| legalForm | "any" | "none" | "ApS" | "A/S" | "I/S" | "K/S" | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/dk/company-nameResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form (e.g. `GmbH`, `S.r.l.`), or `null` when none was added. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Which naming family produced the name. |
API reference
GET /v1/dk/cpr
Try on playgroundReturns a valid Danish CPR (Det Centrale Personregister) number. Constrain with `sex` and age/birth-date filters (the full date is encoded). Contradictory combinations are rejected with a 400. Use `checksum` to choose the mod-11 standard, `format` for the rendering, and `invalid=true` for a deliberately wrong check.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| atAge | integer | Exact age in years at request time. |
| bornAfter | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornBefore | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornOn | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD. |
| checksum | "modulus-11" | "none" | Checksum standard: `modulus-11` (default) or `none` (post-2007 model). |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case values. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "plain" | "with-hyphen" | Rendering: bare 10 digits (default) or `DDMMYY-SSSS`. |
| invalid | boolean | Return a CPR with a deliberately wrong mod-11 check; date/sex stay valid. |
| olderThan | integer | Minimum age in years at request time. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Encoded sex: "m" or "f". |
| youngerThan | integer | Maximum age in years at request time. |
Request
curl https://api.real-fake-data.com/v1/dk/cprResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The CPR rendered in the requested format (plain or `DDMMYY-SSSS`). |
| digits | string | The canonical 10-digit CPR. |
| birthDate | string | The encoded birth date, ISO `YYYY-MM-DD`. |
| sex | "m" | "f" | Encoded sex: `m` (odd) or `f` (even) last digit. |
API reference
GET /v1/dk/cvr
Try on playgroundReturns a valid Danish CVR (company identifier) with a correct mod-11 check digit. Use `format=vat` for the DK VAT number (`DK` + CVR). Set `invalid=true` for a CVR with a deliberately wrong check digit.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case CVRs from the rare corners. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "national" | "vat" | Rendering: bare 8-digit CVR (default) or DK VAT number. |
| invalid | boolean | Return a CVR with a deliberately wrong mod-11 check digit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/dk/cvrResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The identifier in the requested format (national or VAT). |
| digits | string | The canonical, unprefixed 8-digit CVR. |
API reference
GET /v1/dk/email
Try on playgroundReturns a realistic synthetic Danish email address: a name-based local part (romanised to ASCII) on a free webmail, a Danish regional provider, or a corporate domain built from a Danish company brand. `domain` pins an exact domain; `domainCategory` (`free`/`regional`/`corporate`/`any`) scopes a weighted-random draw. `pattern` selects the local-part shape or `any`. `plusTag` controls plus-addressing; `exotic=true` allows the rarer RFC-valid characters.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| domain | stringpattern ^[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ | Pin an exact domain, e.g. "gmail.com". Overrides domainCategory. |
| domainCategory | "free" | "regional" | "corporate" | "any" | Scope the random domain draw: free webmail, regional providers, corporate domains, or any. |
| edge | boolean | Restrict output to edge-case addresses from the rare corners of the format. |
| exotic | boolean | Allow rarer RFC-valid local-part characters (%, =, ~). Off by default. |
| extreme | boolean | Return a correct address whose value is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). localPart, domain, and the decomposition stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | "any" | Local-part shape, e.g. "first.last"; "any" picks a weighted-random one. |
| plusTag | stringpattern ^[A-Za-z0-9_-]+$ | Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/dk/emailResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full email address, e.g. "anna.schmidt+news@mueller-bau.de". |
| localPart | string | The part before the `@`, including any plus tag. |
| domain | string | The domain, e.g. "gmail.com", "wp.pl", or "mueller-bau.de". |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | Which local-part pattern produced the address. |
| domainCategory | "free" | "regional" | "corporate" | Whether the domain is free, regional, or corporate. |
| company | string | The company name a corporate domain or company local-part was derived from, or `null`. |
| plusTag | string | The plus-addressing tag, or `null` when none. |
API reference
GET /v1/dk/iban
Try on playgroundReturns a valid Danish IBAN with a correct checksum. Pin the issuing bank with `bankCode` (4-digit bank code) or `bankName` (mutually exclusive), or let it be chosen at random. Set `invalid=true` to get an IBAN with deliberately wrong check digits, for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| bankCode | string | Pin the issuing bank by its 4-digit bank code. Mutually exclusive with bankName. |
| bankName | string | Pin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case IBANs from the rare corners of the format. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "grouped" | "compact" | IBAN rendering: grouped or compact. Default grouped. |
| invalid | boolean | Return an IBAN with deliberately wrong check digits, for testing validators. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/dk/ibanResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The IBAN in the requested format. |
| electronicFormat | string | The space-free electronic form of the IBAN. |
| bankCode | string | The bank identifier embedded in the IBAN. |
| bankName | string | Human-readable name of the issuing bank. |
API reference
GET /v1/dk/person
Try on playgroundReturns a mutually consistent synthetic Danish person: given name(s), surname, initials, birth date, and a matching CPR. Takes the same inputs as `/v1/dk/cpr` — `sex`, any combination of age/birth-date filters, `checksum`, and `format` (contradictory combinations are rejected with a 400). Set `invalid=true` for a person whose CPR has a deliberately wrong mod-11 check (birth date and sex stay valid). `edge=true` also makes second given names and double-barrelled surnames far more likely. Set `caseStrict=false` to deliberately mangle the name/surname casing.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| atAge | integer | Exact age in years at request time. |
| bornAfter | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornBefore | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornOn | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD. |
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname (all-lower, all-upper, or random); initials stay proper uppercase. |
| checksum | "modulus-11" | "none" | Checksum standard: `modulus-11` (default) or `none` (post-2007 model). |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case values. |
| extreme | boolean | Return a correct person whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials, birthDate, and the national identifier stay clean. |
| format | "plain" | "with-hyphen" | Rendering: bare 10 digits (default) or `DDMMYY-SSSS`. |
| invalid | boolean | Return a CPR with a deliberately wrong mod-11 check; date/sex stay valid. |
| olderThan | integer | Minimum age in years at request time. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Encoded sex: "m" or "f". |
| youngerThan | integer | Maximum age in years at request time. |
Request
curl https://api.real-fake-data.com/v1/dk/personResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s), agreeing with the encoded sex. |
| surname | string | Surname, e.g. `Nielsen`. |
| initials | string | Uppercase initials of name and surname, no dots, e.g. `AN`. |
| birthDate | string | The birth date, ISO `YYYY-MM-DD`. |
| cpr | string | The matching CPR, rendered per the requested format. |
API reference
GET /v1/dk/person-name
Try on playgroundReturns a realistic synthetic Danish person name: given name(s), surname, and initials, in the local script. Use `sex` to pin the gendered form (`m`/`f`) or omit it for a random one. `edge=true` biases the name shape — second given names, double-barrelled surnames, and very short names become far more likely. Set `caseStrict=false` to deliberately mangle the name/surname casing (initials stay proper uppercase).
Query parameters
| Parameter | Type | Description |
|---|---|---|
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname (all-lower, all-upper, or random); initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias toward edge-case name shapes (second given names, double surnames, short names). |
| extreme | boolean | Return a correct name whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Gendered form of the name: "m" or "f". Omit for random. |
Request
curl https://api.real-fake-data.com/v1/dk/person-nameResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s), in the local script, agreeing with the reported sex. |
| surname | string | Surname in the form matching the sex (inflected where the language requires it). |
| initials | string | Uppercase initials of name and surname, no dots, e.g. `JK`. |
| sex | "m" | "f" | The sex the name was inflected for. |
API reference
GET /v1/dk/offering
Try on playgroundReturns a realistic synthetic Danish offering — a product or service with a localized name, a plausible EUR price, its unit, and its industry label. Pin `industry` (NACE code), `type` (product/service), or filter by `industryName`/`offeringName` full text. Set `edge=true` for the price/format corners, `extreme=true` for a hostile-encoded name, or `invalid=true` for a broken record.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict to edge-case offerings (price-band extremes, unusual units, long names). |
| extreme | boolean | Return a correct offering whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, homoglyphs, or bidi marks). Price, unit and industry label stay clean. |
| industry | "73" | "28.3" | "93.2" | "71" | "90" | "29.3" | "10.7" | "64" | "56.30" | "11" | "30.1" | "47.6" | "26.7" | "95.3" | "56.21" | "23.4" | "81.2" | "14" | "95.1" | "26.2" | "41" | "70" | "26.4" | "49.4" | "10.5" | "74.1" | "85" | "43.2" | "82.3" | "59" | "56.12" | "31" | "92" | "81.3" | "23.1" | "47.1" | "96.2" | "27.5" | "86.1" | "55" | "65" | "32.1" | "96.1" | "15" | "69" | "86.2" | "91.2" | "32.2" | "21" | "74.2" | "58" | "68" | "78" | "43.3" | "77" | "56.11" | "80" | "62" | "10.8" | "93.1" | "32.3" | "61" | "13" | "32.4" | "74.3" | "79" | "75" | "63" | "16" | Pin the industry by NACE code. Omit to draw across all covered industries. |
| industryName | string | Full-text filter: keep offerings whose localized industry label contains this. |
| invalid | boolean | Return a deliberately invalid offering (a price outside its band, a negative price, or an empty name) for negative-path testing. Cannot combine with edge/extreme. |
| language | "da" | Pin the name language. Omit for the country’s weighted mix. |
| offeringName | string | Full-text filter: keep offerings whose localized name contains this. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "product" | "service" | Restrict to products or services. Omit for both. |
Request
curl https://api.real-fake-data.com/v1/dk/offeringResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The offering name in the resolved language. |
| offeringName | string | The full offering name (alias of `value`). |
| kind | "product" | "service" | Whether it is a good or a rendered service. |
| unit | string | The unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …). |
| price | integer | A single plausible price, in EUR minor units (cents). |
| currency | "EUR" | Currency of `price`; always EUR. |
| industryCode | string | NACE Rev. 2.1 code of the offering’s industry. |
| industryName | string | The localized industry label in the resolved language. |
| language | string | BCP-47 subtag used for this record’s names. |
API reference
GET /v1/dk/vehicle-registration
Try on playgroundReturns a realistic Danish vehicle registration plate. `type` selects the kind: `standard` (default, `LL NNNNN` rendered `LL NN NNN`, e.g. AB 12 345), `custom` (a 1–7 character vanity plate over `A–Z Æ Ø Å 0–9`), `diplomatic` (`LL 76NNN`/`LL 77NNN`), `trailer` (`LL NNNN`), `motorcycle` (same mask as standard), or `export` (`[YY]NNNNN`). `era` exposes the divergent 1950s single-letter `L NNNNN` legacy form (`current` default, `legacy`, or `both`), and applies only to the standard/motorcycle masks. Denmark encodes no region and no plate carries a checksum, so there is no `invalid` variant. Use `format` to choose spaced or compact rendering.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case plates from the rare corners of the format. |
| era | "current" | "legacy" | "both" | Which era format to honour for standard/motorcycle plates: current (default), legacy (single-letter 1950s form), or both. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "with-space" | "compact" | Plate rendering: with a space or compact. Default with-space. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "standard" | "custom" | "diplomatic" | "trailer" | "motorcycle" | "export" | Plate kind: standard, custom, diplomatic, trailer, motorcycle, or export. |
Request
curl https://api.real-fake-data.com/v1/dk/vehicle-registrationResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The plate in the requested format, e.g. "AB 12 345". |
| type | "standard" | "custom" | "diplomatic" | "trailer" | "motorcycle" | "export" | Which kind of plate this is. |
API reference
GET /v1/nl/bsn
Try on playgroundReturns a valid Dutch BSN (Burgerservicenummer) with a correct elfproef check. The BSN is non-semantic — it encodes no birth date or sex. Set `invalid=true` for a BSN with a deliberately wrong check digit, or `edge=true` for valid edge-case numbers.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case BSNs from the rare corners. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| invalid | boolean | Return a BSN with a deliberately wrong elfproef check digit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/nl/bsnResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The BSN rendered as a 9-digit string. |
| digits | string | The canonical 9-digit BSN. |
API reference
GET /v1/nl/btw-id
Try on playgroundReturns a valid Dutch btw-id (VAT identification number), e.g. `NL123456789B01`. Use `standard` to pick `modern` (default, MOD 97-10 checked) or `legacy` (elfproef core, `B01` suffix). Set `invalid=true` for a btw-id that fails validation, or `edge=true` for valid edge-case numbers.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case btw-ids from the rare corners. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| invalid | boolean | Return a btw-id that deliberately fails validation. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| standard | "legacy" | "modern" | "both" | Numbering standard: `modern` (default), `legacy`, or `both` (random per record). |
Request
curl https://api.real-fake-data.com/v1/nl/btw-idResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full btw-id, e.g. `NL123456789B01`. |
| digits | string | The bare 9-character core between `NL` and `B`. |
| standard | "legacy" | "modern" | Which standard the value was built to. |
API reference
GET /v1/nl/company
Try on playgroundReturns a consistent synthetic Dutch company in one call: a full trading name with its legal form, plus the matching KvK, RSIN, and btw-id. Shape the name with `strategy` and `legalForm` (as on `/v1/nl/company-name`). Set `invalid=true` to corrupt the RSIN and btw-id check digits (the KvK number has no checksum and the name stays intact), for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case values from the rare corners. |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Corrupt the RSIN and btw-id check digits, for testing validators. |
| legalForm | "any" | "none" | "B.V." | "N.V." | "V.O.F." | "C.V." | "Eenmanszaak" | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family for the company name. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/nl/companyResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form, or `null` when none was added. |
| kvk | string | The matching 8-digit KvK number. |
| rsin | string | The matching 9-digit RSIN. |
| btwId | string | The matching btw-id (VAT number), modern NL…B.. form. |
API reference
GET /v1/nl/company-name
Try on playgroundReturns a realistic synthetic Dutch company name across the naming families (coined, owner-surname, descriptive, modern), with an optional trailing legal form in its authentic local form. Pin `strategy` or `legalForm`, set `legalForm=none` to omit it, or `edge=true` for the punctuation-heavy / long-form corners.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case names (punctuation-heavy families, long/rare forms). |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| legalForm | "any" | "none" | "B.V." | "N.V." | "V.O.F." | "C.V." | "Eenmanszaak" | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/nl/company-nameResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form (e.g. `GmbH`, `S.r.l.`), or `null` when none was added. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Which naming family produced the name. |
API reference
GET /v1/nl/email
Try on playgroundReturns a realistic synthetic Dutch email address: a name-based local part (romanised to ASCII) on a free webmail, a Dutch regional provider, or a corporate domain built from a Dutch company brand. `domain` pins an exact domain; `domainCategory` (`free`/`regional`/`corporate`/`any`) scopes a weighted-random draw. `pattern` selects the local-part shape or `any`. `plusTag` controls plus-addressing; `exotic=true` allows the rarer RFC-valid characters.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| domain | stringpattern ^[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ | Pin an exact domain, e.g. "gmail.com". Overrides domainCategory. |
| domainCategory | "free" | "regional" | "corporate" | "any" | Scope the random domain draw: free webmail, regional providers, corporate domains, or any. |
| edge | boolean | Restrict output to edge-case addresses from the rare corners of the format. |
| exotic | boolean | Allow rarer RFC-valid local-part characters (%, =, ~). Off by default. |
| extreme | boolean | Return a correct address whose value is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). localPart, domain, and the decomposition stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | "any" | Local-part shape, e.g. "first.last"; "any" picks a weighted-random one. |
| plusTag | stringpattern ^[A-Za-z0-9_-]+$ | Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/nl/emailResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full email address, e.g. "anna.schmidt+news@mueller-bau.de". |
| localPart | string | The part before the `@`, including any plus tag. |
| domain | string | The domain, e.g. "gmail.com", "wp.pl", or "mueller-bau.de". |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | Which local-part pattern produced the address. |
| domainCategory | "free" | "regional" | "corporate" | Whether the domain is free, regional, or corporate. |
| company | string | The company name a corporate domain or company local-part was derived from, or `null`. |
| plusTag | string | The plus-addressing tag, or `null` when none. |
API reference
GET /v1/nl/iban
Try on playgroundReturns a valid Dutch IBAN with a correct checksum. Pin the issuing bank with `bankCode` (4-letter bank code) or `bankName` (mutually exclusive), or let it be chosen at random. Set `invalid=true` to get an IBAN with deliberately wrong check digits, for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| bankCode | string | Pin the issuing bank by its 4-letter bank code. Mutually exclusive with bankName. |
| bankName | string | Pin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case IBANs from the rare corners of the format. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "grouped" | "compact" | IBAN rendering: grouped or compact. Default grouped. |
| invalid | boolean | Return an IBAN with deliberately wrong check digits, for testing validators. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/nl/ibanResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The IBAN in the requested format. |
| electronicFormat | string | The space-free electronic form of the IBAN. |
| bankCode | string | The bank identifier embedded in the IBAN. |
| bankName | string | Human-readable name of the issuing bank. |
API reference
GET /v1/nl/kvk
Try on playgroundReturns a valid Dutch KvK number (Kamer van Koophandel registration number) — an 8-digit number whose first digit is non-zero. The KvK number carries no checksum, so there is no `invalid` flag. Set `edge=true` for valid edge-case numbers (min, max, repeated-pattern).
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case KvK numbers from the rare corners. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/nl/kvkResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The KvK number rendered as an 8-digit string. |
| digits | string | The canonical 8-digit KvK number. |
API reference
GET /v1/nl/person
Try on playgroundReturns a synthetic Dutch person: given name(s), surname, initials, birth date, and a matching BSN. The Dutch BSN is non-semantic (it encodes neither sex nor birth date), so the birth date is drawn independently within any age/birth-date filters (contradictory combinations are rejected with a 400) and `sex` forces the gendered form of the name. Set `invalid=true` for a person whose BSN has a deliberately wrong elfproef check digit. `edge=true` biases the BSN and name shape toward their rare corners. Set `caseStrict=false` to deliberately mangle the name/surname casing.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| atAge | integer | Exact age in years at request time. |
| bornAfter | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornBefore | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornOn | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD. |
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname (all-lower, all-upper, or random); initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict the BSN to edge-case values and bias the name shape. |
| extreme | boolean | Return a correct person whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials, birthDate, and the national identifier stay clean. |
| invalid | boolean | Return a person whose BSN has a deliberately wrong elfproef check digit. |
| olderThan | integer | Minimum age in years at request time. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Encoded sex: "m" or "f". |
| youngerThan | integer | Maximum age in years at request time. |
Request
curl https://api.real-fake-data.com/v1/nl/personResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s). |
| surname | string | Surname, e.g. `de Vries`. |
| initials | string | Uppercase initials of name and surname, no dots, e.g. `DV`. |
| birthDate | string | The birth date, ISO `YYYY-MM-DD` (independent of the BSN). |
| bsn | string | The matching 9-digit BSN (Burgerservicenummer). |
API reference
GET /v1/nl/person-name
Try on playgroundReturns a realistic synthetic Dutch person name: given name(s), surname, and initials, in the local script. Use `sex` to pin the gendered form (`m`/`f`) or omit it for a random one. `edge=true` biases the name shape — second given names, double-barrelled surnames, and very short names become far more likely. Set `caseStrict=false` to deliberately mangle the name/surname casing (initials stay proper uppercase).
Query parameters
| Parameter | Type | Description |
|---|---|---|
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname (all-lower, all-upper, or random); initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias toward edge-case name shapes (second given names, double surnames, short names). |
| extreme | boolean | Return a correct name whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Gendered form of the name: "m" or "f". Omit for random. |
Request
curl https://api.real-fake-data.com/v1/nl/person-nameResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s), in the local script, agreeing with the reported sex. |
| surname | string | Surname in the form matching the sex (inflected where the language requires it). |
| initials | string | Uppercase initials of name and surname, no dots, e.g. `JK`. |
| sex | "m" | "f" | The sex the name was inflected for. |
API reference
GET /v1/nl/offering
Try on playgroundReturns a realistic synthetic Dutch offering — a product or service with a localized name, a plausible EUR price, its unit, and its industry label. Pin `industry` (NACE code), `type` (product/service), or filter by `industryName`/`offeringName` full text. Set `edge=true` for the price/format corners, `extreme=true` for a hostile-encoded name, or `invalid=true` for a broken record.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict to edge-case offerings (price-band extremes, unusual units, long names). |
| extreme | boolean | Return a correct offering whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, homoglyphs, or bidi marks). Price, unit and industry label stay clean. |
| industry | "73" | "28.3" | "93.2" | "71" | "90" | "29.3" | "10.7" | "64" | "56.30" | "11" | "30.1" | "47.6" | "26.7" | "95.3" | "56.21" | "23.4" | "81.2" | "14" | "95.1" | "26.2" | "41" | "70" | "26.4" | "49.4" | "10.5" | "74.1" | "85" | "43.2" | "82.3" | "59" | "56.12" | "31" | "92" | "81.3" | "23.1" | "47.1" | "96.2" | "27.5" | "86.1" | "55" | "65" | "32.1" | "96.1" | "15" | "69" | "86.2" | "91.2" | "32.2" | "21" | "74.2" | "58" | "68" | "78" | "43.3" | "77" | "56.11" | "80" | "62" | "10.8" | "93.1" | "32.3" | "61" | "13" | "32.4" | "74.3" | "79" | "75" | "63" | "16" | Pin the industry by NACE code. Omit to draw across all covered industries. |
| industryName | string | Full-text filter: keep offerings whose localized industry label contains this. |
| invalid | boolean | Return a deliberately invalid offering (a price outside its band, a negative price, or an empty name) for negative-path testing. Cannot combine with edge/extreme. |
| language | "nl" | Pin the name language. Omit for the country’s weighted mix. |
| offeringName | string | Full-text filter: keep offerings whose localized name contains this. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "product" | "service" | Restrict to products or services. Omit for both. |
Request
curl https://api.real-fake-data.com/v1/nl/offeringResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The offering name in the resolved language. |
| offeringName | string | The full offering name (alias of `value`). |
| kind | "product" | "service" | Whether it is a good or a rendered service. |
| unit | string | The unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …). |
| price | integer | A single plausible price, in EUR minor units (cents). |
| currency | "EUR" | Currency of `price`; always EUR. |
| industryCode | string | NACE Rev. 2.1 code of the offering’s industry. |
| industryName | string | The localized industry label in the resolved language. |
| language | string | BCP-47 subtag used for this record’s names. |
API reference
GET /v1/nl/rsin
Try on playgroundReturns a valid Dutch RSIN (Rechtspersonen en Samenwerkingsverbanden Informatienummer) with a correct elfproef check. The RSIN is non-semantic. Set `invalid=true` for an RSIN with a deliberately wrong check digit, or `edge=true` for valid edge-case numbers.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case RSINs from the rare corners. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| invalid | boolean | Return an RSIN with a deliberately wrong elfproef check digit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/nl/rsinResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The RSIN rendered as a 9-digit string. |
| digits | string | The canonical 9-digit RSIN. |
API reference
GET /v1/nl/vehicle-registration
Try on playgroundReturns a realistic Dutch vehicle registration plate (*kenteken*). `type` selects the kind: `standard` (default, a current civilian sidecode-11 `LLL-NN-L`, e.g. PDA-01-D), `motorcycle` (`M`-series `NN-LLL-N`), `historic` (dark-blue pre-1978 `NN-NN-LL`), `diplomatic` (`CD-NN-NN`), `military` (KM/KZ/LM/DM + `LL-NN-NN`), `dealer` (green `HA-NN-NN`), or `export` (`Z-NN-NN`). For a `standard` plate, `sidecode` pins one of the still-issued civilian sidecodes (5, 6, 8, 9, 10, 11) and `era` chooses `current`, `legacy` (the digit-leading sidecodes 3/4), or `both`. The Netherlands encodes no region, issues no vanity plates, and no plate carries a checksum, so there is no invalid variant. Use `format` to choose hyphenated or compact rendering.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case plates from the rare corners of the format. |
| era | "current" | "legacy" | "both" | Which era of civilian sidecodes a standard plate honours: current (default), legacy (digit-leading 3/4), or both. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "with-hyphen" | "compact" | Plate rendering: hyphenated or compact. Default with-hyphen. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sidecode | integer | Pin a standard plate to a still-issued civilian sidecode: 5, 6, 8, 9, 10, or 11. |
| type | "standard" | "motorcycle" | "historic" | "diplomatic" | "military" | "dealer" | "export" | Plate kind: standard, motorcycle, historic, diplomatic, military, dealer, or export. |
Request
curl https://api.real-fake-data.com/v1/nl/vehicle-registrationResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The plate in the requested format, e.g. "PDA-01-D". |
| type | "standard" | "motorcycle" | "historic" | "diplomatic" | "military" | "dealer" | "export" | Which kind of plate this is. |
API reference
GET /v1/ee/company
Try on playgroundReturns a consistent synthetic Estonian company in one call: a full trading name with its legal form, plus the matching registrikood, kmkr. Shape the name with `strategy` and `legalForm` (as on `/v1/ee/company-name`). Set `invalid=true` to corrupt the checksummed identifiers (the name stays intact), for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case values from the rare corners. |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Corrupt the checksummed identifiers, for testing validators. |
| legalForm | "any" | "none" | "OÜ" | "AS" | "TÜ" | "UÜ" | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family for the company name. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/ee/companyResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form, or `null` when none was added. |
| registrikood | string | The matching registrikood identifier. |
| kmkr | string | The matching kmkr identifier. |
API reference
GET /v1/ee/company-name
Try on playgroundReturns a realistic synthetic Estonian company name across the naming families (coined, owner-surname, descriptive, modern), with an optional trailing legal form in its authentic local form. Pin `strategy` or `legalForm`, set `legalForm=none` to omit it, or `edge=true` for the punctuation-heavy / long-form corners.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case names (punctuation-heavy families, long/rare forms). |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| legalForm | "any" | "none" | "OÜ" | "AS" | "TÜ" | "UÜ" | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/ee/company-nameResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form (e.g. `GmbH`, `S.r.l.`), or `null` when none was added. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Which naming family produced the name. |
API reference
GET /v1/ee/email
Try on playgroundReturns a realistic synthetic Estonian email address: a name-based local part (romanised to ASCII) on a free webmail, a Estonian regional provider, or a corporate domain built from a Estonian company brand. `domain` pins an exact domain; `domainCategory` (`free`/`regional`/`corporate`/`any`) scopes a weighted-random draw. `pattern` selects the local-part shape or `any`. `plusTag` controls plus-addressing; `exotic=true` allows the rarer RFC-valid characters.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| domain | stringpattern ^[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ | Pin an exact domain, e.g. "gmail.com". Overrides domainCategory. |
| domainCategory | "free" | "regional" | "corporate" | "any" | Scope the random domain draw: free webmail, regional providers, corporate domains, or any. |
| edge | boolean | Restrict output to edge-case addresses from the rare corners of the format. |
| exotic | boolean | Allow rarer RFC-valid local-part characters (%, =, ~). Off by default. |
| extreme | boolean | Return a correct address whose value is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). localPart, domain, and the decomposition stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | "any" | Local-part shape, e.g. "first.last"; "any" picks a weighted-random one. |
| plusTag | stringpattern ^[A-Za-z0-9_-]+$ | Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/ee/emailResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full email address, e.g. "anna.schmidt+news@mueller-bau.de". |
| localPart | string | The part before the `@`, including any plus tag. |
| domain | string | The domain, e.g. "gmail.com", "wp.pl", or "mueller-bau.de". |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | Which local-part pattern produced the address. |
| domainCategory | "free" | "regional" | "corporate" | Whether the domain is free, regional, or corporate. |
| company | string | The company name a corporate domain or company local-part was derived from, or `null`. |
| plusTag | string | The plus-addressing tag, or `null` when none. |
API reference
GET /v1/ee/iban
Try on playgroundReturns a valid Estonian IBAN with a correct checksum. Pin the issuing bank with `bankCode` (2-digit bank code) or `bankName` (mutually exclusive), or let it be chosen at random. Set `invalid=true` to get an IBAN with deliberately wrong check digits, for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| bankCode | string | Pin the issuing bank by its 2-digit bank code. Mutually exclusive with bankName. |
| bankName | string | Pin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case IBANs from the rare corners of the format. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "grouped" | "compact" | IBAN rendering: grouped or compact. Default grouped. |
| invalid | boolean | Return an IBAN with deliberately wrong check digits, for testing validators. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/ee/ibanResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The IBAN in the requested format. |
| electronicFormat | string | The space-free electronic form of the IBAN. |
| bankCode | string | The bank identifier embedded in the IBAN. |
| bankName | string | Human-readable name of the issuing bank. |
API reference
GET /v1/ee/isikukood
Try on playgroundReturns a valid Estonian isikukood (personal identification code) with a correct two-pass mod-11 check digit. Constrain with `sex` and age/birth-date filters (the full birth date is encoded). Contradictory combinations are rejected with a 400. Set `invalid=true` for a deliberately wrong check digit.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| atAge | integer | Exact age in years at request time. |
| bornAfter | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornBefore | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornOn | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case values. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| invalid | boolean | Return an isikukood with a deliberately wrong mod-11 check digit; date/sex stay valid. |
| olderThan | integer | Minimum age in years at request time. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Encoded sex: "m" or "f". |
| youngerThan | integer | Maximum age in years at request time. |
Request
curl https://api.real-fake-data.com/v1/ee/isikukoodResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The isikukood in the requested form. |
| digits | string | The canonical 11-digit isikukood. |
| birthDate | string | The encoded birth date, ISO `YYYY-MM-DD`. |
| sex | "m" | "f" | Encoded sex: `m` (odd) or `f` (even) leading digit. |
API reference
GET /v1/ee/kmkr
Try on playgroundReturns a valid Estonian KMKR (käibemaksukohustuslase number, VAT number) with a correct check digit. Use `format=vat` for the `EE`-prefixed intra-EU VAT identifier. Set `invalid=true` for a KMKR with a deliberately wrong check digit.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case KMKRs from the rare corners. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "national" | "vat" | Rendering: bare 9-digit KMKR (default) or `EE`-prefixed VAT number. |
| invalid | boolean | Return a KMKR with a deliberately wrong check digit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/ee/kmkrResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The identifier in the requested format (national or VAT). |
| digits | string | The canonical, unprefixed 9-digit KMKR. |
API reference
GET /v1/ee/person
Try on playgroundReturns a synthetic Estonian person: given name(s), surname, initials, birth date, and the matching isikukood. Constrain with `sex` and age/birth-date filters (contradictory combinations are rejected with a 400). Set `invalid=true` for a deliberately wrong check value, `edge=true` for rare-corner values, and `caseStrict=false` to mangle the name casing.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| atAge | integer | Exact age in years at request time. |
| bornAfter | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornBefore | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornOn | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD. |
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname; initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias the number and name shape toward their rarely-exercised corners. |
| extreme | boolean | Return a correct person whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials, birthDate, and the national identifier stay clean. |
| invalid | boolean | Return a person whose isikukood has a deliberately wrong check value. |
| olderThan | integer | Minimum age in years at request time. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Encoded sex: "m" or "f". |
| youngerThan | integer | Maximum age in years at request time. |
Request
curl https://api.real-fake-data.com/v1/ee/personResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s). |
| surname | string | Surname. |
| initials | string | Uppercase initials of name and surname, no dots. |
| birthDate | string | The birth date, ISO `YYYY-MM-DD`. |
| isikukood | string | The matching isikukood. |
API reference
GET /v1/ee/person-name
Try on playgroundReturns a realistic synthetic Estonian person name: given name(s), surname, and initials, in the local script. Use `sex` to pin the gendered form (`m`/`f`) or omit it for a random one. `edge=true` biases the name shape — second given names, double-barrelled surnames, and very short names become far more likely. Set `caseStrict=false` to deliberately mangle the name/surname casing (initials stay proper uppercase).
Query parameters
| Parameter | Type | Description |
|---|---|---|
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname (all-lower, all-upper, or random); initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias toward edge-case name shapes (second given names, double surnames, short names). |
| extreme | boolean | Return a correct name whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Gendered form of the name: "m" or "f". Omit for random. |
Request
curl https://api.real-fake-data.com/v1/ee/person-nameResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s), in the local script, agreeing with the reported sex. |
| surname | string | Surname in the form matching the sex (inflected where the language requires it). |
| initials | string | Uppercase initials of name and surname, no dots, e.g. `JK`. |
| sex | "m" | "f" | The sex the name was inflected for. |
API reference
GET /v1/ee/offering
Try on playgroundReturns a realistic synthetic Estonian offering — a product or service with a localized name, a plausible EUR price, its unit, and its industry label. Pin `industry` (NACE code), `type` (product/service), or filter by `industryName`/`offeringName` full text. Set `edge=true` for the price/format corners, `extreme=true` for a hostile-encoded name, or `invalid=true` for a broken record.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict to edge-case offerings (price-band extremes, unusual units, long names). |
| extreme | boolean | Return a correct offering whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, homoglyphs, or bidi marks). Price, unit and industry label stay clean. |
| industry | "73" | "28.3" | "93.2" | "71" | "90" | "29.3" | "10.7" | "64" | "56.30" | "11" | "30.1" | "47.6" | "26.7" | "95.3" | "56.21" | "23.4" | "81.2" | "14" | "95.1" | "26.2" | "41" | "70" | "26.4" | "49.4" | "10.5" | "74.1" | "85" | "43.2" | "82.3" | "59" | "56.12" | "31" | "92" | "81.3" | "23.1" | "47.1" | "96.2" | "27.5" | "86.1" | "55" | "65" | "32.1" | "96.1" | "15" | "69" | "86.2" | "91.2" | "32.2" | "21" | "74.2" | "58" | "68" | "78" | "43.3" | "77" | "56.11" | "80" | "62" | "10.8" | "93.1" | "32.3" | "61" | "13" | "32.4" | "74.3" | "79" | "75" | "63" | "16" | Pin the industry by NACE code. Omit to draw across all covered industries. |
| industryName | string | Full-text filter: keep offerings whose localized industry label contains this. |
| invalid | boolean | Return a deliberately invalid offering (a price outside its band, a negative price, or an empty name) for negative-path testing. Cannot combine with edge/extreme. |
| language | "et" | Pin the name language. Omit for the country’s weighted mix. |
| offeringName | string | Full-text filter: keep offerings whose localized name contains this. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "product" | "service" | Restrict to products or services. Omit for both. |
Request
curl https://api.real-fake-data.com/v1/ee/offeringResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The offering name in the resolved language. |
| offeringName | string | The full offering name (alias of `value`). |
| kind | "product" | "service" | Whether it is a good or a rendered service. |
| unit | string | The unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …). |
| price | integer | A single plausible price, in EUR minor units (cents). |
| currency | "EUR" | Currency of `price`; always EUR. |
| industryCode | string | NACE Rev. 2.1 code of the offering’s industry. |
| industryName | string | The localized industry label in the resolved language. |
| language | string | BCP-47 subtag used for this record’s names. |
API reference
GET /v1/ee/registrikood
Try on playgroundReturns a valid Estonian registrikood (Commercial Register code for a legal entity) with a correct two-pass mod-11 check digit. Set `invalid=true` for a registrikood with a deliberately wrong check digit.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case registrikoods from the rare corners. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| invalid | boolean | Return a registrikood with a deliberately wrong mod-11 check digit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/ee/registrikoodResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The registrikood in the requested form. |
| digits | string | The canonical 8-digit registrikood. |
API reference
GET /v1/ee/vehicle-registration
Try on playgroundReturns a realistic Estonian vehicle registration plate. `type` selects the kind: `standard` (default, post-2019 `NNN LLL`, e.g. 123 ABC), `custom` (personalised 1–9 chars), `diplomatic` (CD/CMD + digits), `dealer` (`PROOV NNNN`), `racing` (`SP NNNN`), `classic` (`L NNN`), `motorcycle` (`NN LL`), `moped` (`NNN L`), `transit` (`LL-NNNN`), or `military` (`K`/`EK` series). For `standard` plates, `era` picks `current` (post-2019 random), `legacy` (older county-anchored `NNN YLL`), or `both`; it is ignored for other types. No Estonian plate carries a checksum, so there is no `invalid` variant. Use `format` to choose spaced or compact rendering.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case plates from the rare corners of the format. |
| era | "current" | "legacy" | "both" | Standard-plate era: current (post-2019 `NNN LLL`), legacy (county-anchored `NNN YLL`), or both. Ignored for non-standard types. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "with-space" | "compact" | Plate rendering: with a space or compact. Default with-space. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "standard" | "custom" | "diplomatic" | "dealer" | "racing" | "classic" | "motorcycle" | "moped" | "transit" | "military" | Plate kind: standard, custom, diplomatic, dealer, racing, classic, motorcycle, moped, transit, or military. |
Request
curl https://api.real-fake-data.com/v1/ee/vehicle-registrationResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The plate in the requested format, e.g. "123 ABC". |
| type | "standard" | "custom" | "diplomatic" | "dealer" | "racing" | "classic" | "motorcycle" | "moped" | "transit" | "military" | Which kind of plate this is. |
API reference
GET /v1/fi/company
Try on playgroundReturns a consistent synthetic Finnish company in one call: a full trading name with its legal form, plus the matching yTunnus. Shape the name with `strategy` and `legalForm` (as on `/v1/fi/company-name`). Set `invalid=true` to corrupt the checksummed identifiers (the name stays intact), for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case values from the rare corners. |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Corrupt the checksummed identifiers, for testing validators. |
| legalForm | "any" | "none" | "Oy" | "Oyj" | "Ky" | "Ay" | "Tmi" | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family for the company name. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/fi/companyResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form, or `null` when none was added. |
| yTunnus | string | The matching y-tunnus identifier. |
API reference
GET /v1/fi/company-name
Try on playgroundReturns a realistic synthetic Finnish company name across the naming families (coined, owner-surname, descriptive, modern), with an optional trailing legal form in its authentic local form. Pin `strategy` or `legalForm`, set `legalForm=none` to omit it, or `edge=true` for the punctuation-heavy / long-form corners.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case names (punctuation-heavy families, long/rare forms). |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| legalForm | "any" | "none" | "Oy" | "Oyj" | "Ky" | "Ay" | "Tmi" | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/fi/company-nameResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form (e.g. `GmbH`, `S.r.l.`), or `null` when none was added. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Which naming family produced the name. |
API reference
GET /v1/fi/email
Try on playgroundReturns a realistic synthetic Finnish email address: a name-based local part (romanised to ASCII) on a free webmail, a Finnish regional provider, or a corporate domain built from a Finnish company brand. `domain` pins an exact domain; `domainCategory` (`free`/`regional`/`corporate`/`any`) scopes a weighted-random draw. `pattern` selects the local-part shape or `any`. `plusTag` controls plus-addressing; `exotic=true` allows the rarer RFC-valid characters.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| domain | stringpattern ^[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ | Pin an exact domain, e.g. "gmail.com". Overrides domainCategory. |
| domainCategory | "free" | "regional" | "corporate" | "any" | Scope the random domain draw: free webmail, regional providers, corporate domains, or any. |
| edge | boolean | Restrict output to edge-case addresses from the rare corners of the format. |
| exotic | boolean | Allow rarer RFC-valid local-part characters (%, =, ~). Off by default. |
| extreme | boolean | Return a correct address whose value is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). localPart, domain, and the decomposition stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | "any" | Local-part shape, e.g. "first.last"; "any" picks a weighted-random one. |
| plusTag | stringpattern ^[A-Za-z0-9_-]+$ | Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/fi/emailResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full email address, e.g. "anna.schmidt+news@mueller-bau.de". |
| localPart | string | The part before the `@`, including any plus tag. |
| domain | string | The domain, e.g. "gmail.com", "wp.pl", or "mueller-bau.de". |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | Which local-part pattern produced the address. |
| domainCategory | "free" | "regional" | "corporate" | Whether the domain is free, regional, or corporate. |
| company | string | The company name a corporate domain or company local-part was derived from, or `null`. |
| plusTag | string | The plus-addressing tag, or `null` when none. |
API reference
GET /v1/fi/henkilotunnus
Try on playgroundReturns a valid Finnish henkilötunnus (HETU, personal identity code) with a correct check character. Constrain with `sex` and age/birth-date filters (the full birth date and sex are encoded). Contradictory combinations are rejected with a 400. Set `invalid=true` for a deliberately wrong check character.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| atAge | integer | Exact age in years at request time. |
| bornAfter | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornBefore | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornOn | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case values. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| invalid | boolean | Return a HETU with a deliberately wrong check character; date/sex stay valid. |
| olderThan | integer | Minimum age in years at request time. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Encoded sex: "m" or "f". |
| youngerThan | integer | Maximum age in years at request time. |
Request
curl https://api.real-fake-data.com/v1/fi/henkilotunnusResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The canonical 11-character HETU, e.g. `131052-308T`. |
| digits | string | The 9-digit `DDMMYYNNN` the check character is computed from. |
| birthDate | string | The encoded birth date, ISO `YYYY-MM-DD`. |
| sex | "m" | "f" | Encoded sex: `m` (odd) or `f` (even) individual number. |
API reference
GET /v1/fi/iban
Try on playgroundReturns a valid Finnish IBAN with a correct checksum. Pin the issuing bank with `bankCode` (6-digit bank code) or `bankName` (mutually exclusive), or let it be chosen at random. Set `invalid=true` to get an IBAN with deliberately wrong check digits, for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| bankCode | string | Pin the issuing bank by its 6-digit bank code. Mutually exclusive with bankName. |
| bankName | string | Pin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case IBANs from the rare corners of the format. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "grouped" | "compact" | IBAN rendering: grouped or compact. Default grouped. |
| invalid | boolean | Return an IBAN with deliberately wrong check digits, for testing validators. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/fi/ibanResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The IBAN in the requested format. |
| electronicFormat | string | The space-free electronic form of the IBAN. |
| bankCode | string | The bank identifier embedded in the IBAN. |
| bankName | string | Human-readable name of the issuing bank. |
API reference
GET /v1/fi/person
Try on playgroundReturns a synthetic Finnish person: given name(s), surname, initials, birth date, and the matching HETU. Constrain with `sex` and age/birth-date filters (contradictory combinations are rejected with a 400). Set `invalid=true` for a deliberately wrong check value, `edge=true` for rare-corner values, and `caseStrict=false` to mangle the name casing.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| atAge | integer | Exact age in years at request time. |
| bornAfter | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornBefore | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornOn | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD. |
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname; initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias the number and name shape toward their rarely-exercised corners. |
| extreme | boolean | Return a correct person whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials, birthDate, and the national identifier stay clean. |
| invalid | boolean | Return a person whose HETU has a deliberately wrong check value. |
| olderThan | integer | Minimum age in years at request time. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Encoded sex: "m" or "f". |
| youngerThan | integer | Maximum age in years at request time. |
Request
curl https://api.real-fake-data.com/v1/fi/personResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s). |
| surname | string | Surname. |
| initials | string | Uppercase initials of name and surname, no dots. |
| birthDate | string | The birth date, ISO `YYYY-MM-DD`. |
| henkilotunnus | string | The matching HETU. |
API reference
GET /v1/fi/person-name
Try on playgroundReturns a realistic synthetic Finnish person name: given name(s), surname, and initials, in the local script. Use `sex` to pin the gendered form (`m`/`f`) or omit it for a random one. `edge=true` biases the name shape — second given names, double-barrelled surnames, and very short names become far more likely. Set `caseStrict=false` to deliberately mangle the name/surname casing (initials stay proper uppercase).
Query parameters
| Parameter | Type | Description |
|---|---|---|
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname (all-lower, all-upper, or random); initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias toward edge-case name shapes (second given names, double surnames, short names). |
| extreme | boolean | Return a correct name whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Gendered form of the name: "m" or "f". Omit for random. |
Request
curl https://api.real-fake-data.com/v1/fi/person-nameResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s), in the local script, agreeing with the reported sex. |
| surname | string | Surname in the form matching the sex (inflected where the language requires it). |
| initials | string | Uppercase initials of name and surname, no dots, e.g. `JK`. |
| sex | "m" | "f" | The sex the name was inflected for. |
API reference
GET /v1/fi/offering
Try on playgroundReturns a realistic synthetic Finnish offering — a product or service with a localized name, a plausible EUR price, its unit, and its industry label. Finnish is multilingual: without a pinned `language`, names draw from the weighted fi/sv mix. Pin `industry` (NACE code), `type` (product/service), or filter by `industryName`/`offeringName` full text. Set `edge=true` for the price/format corners, `extreme=true` for a hostile-encoded name, or `invalid=true` for a broken record.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict to edge-case offerings (price-band extremes, unusual units, long names). |
| extreme | boolean | Return a correct offering whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, homoglyphs, or bidi marks). Price, unit and industry label stay clean. |
| industry | "73" | "28.3" | "93.2" | "71" | "90" | "29.3" | "10.7" | "64" | "56.30" | "11" | "30.1" | "47.6" | "26.7" | "95.3" | "56.21" | "23.4" | "81.2" | "14" | "95.1" | "26.2" | "41" | "70" | "26.4" | "49.4" | "10.5" | "74.1" | "85" | "43.2" | "82.3" | "59" | "56.12" | "31" | "92" | "81.3" | "23.1" | "47.1" | "96.2" | "27.5" | "86.1" | "55" | "65" | "32.1" | "96.1" | "15" | "69" | "86.2" | "91.2" | "32.2" | "21" | "74.2" | "58" | "68" | "78" | "43.3" | "77" | "56.11" | "80" | "62" | "10.8" | "93.1" | "32.3" | "61" | "13" | "32.4" | "74.3" | "79" | "75" | "63" | "16" | Pin the industry by NACE code. Omit to draw across all covered industries. |
| industryName | string | Full-text filter: keep offerings whose localized industry label contains this. |
| invalid | boolean | Return a deliberately invalid offering (a price outside its band, a negative price, or an empty name) for negative-path testing. Cannot combine with edge/extreme. |
| language | "fi" | "sv" | Pin the name language. Omit for the country’s weighted mix. |
| offeringName | string | Full-text filter: keep offerings whose localized name contains this. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "product" | "service" | Restrict to products or services. Omit for both. |
Request
curl https://api.real-fake-data.com/v1/fi/offeringResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The offering name in the resolved language. |
| offeringName | string | The full offering name (alias of `value`). |
| kind | "product" | "service" | Whether it is a good or a rendered service. |
| unit | string | The unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …). |
| price | integer | A single plausible price, in EUR minor units (cents). |
| currency | "EUR" | Currency of `price`; always EUR. |
| industryCode | string | NACE Rev. 2.1 code of the offering’s industry. |
| industryName | string | The localized industry label in the resolved language. |
| language | string | BCP-47 subtag used for this record’s names. |
API reference
GET /v1/fi/vehicle-registration
Try on playgroundReturns a realistic Finnish vehicle registration plate. `type` selects the kind: `standard` (default, `LLL-NNN`, e.g. KOV-713), `custom` (vanity), `diplomatic` (`CD-NNNN`), `export` (`L-NNNN`), `dealer` (`KOE NNN-L`), `museum` (`M<L>-NNN`), `trailer` (D/P/W series), `military` (bare `NNNNN`), `motorcycle` (`LL-NNN`), or `aland` (`ÅL NNNNN`). On the standard plate, `era` chooses the modern `current` scheme or the shorter `legacy` 1960s–70s tails (`both` picks one at random). Finland carries no region and no checksum, so there is no `invalid` variant. Use `format` for hyphen, spaced, or compact rendering.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case plates from the rare corners of the format. |
| era | "current" | "legacy" | "both" | Format generation for the standard plate: current (`LLL-NNN`), legacy (`LLL-N`/`LLL-NN`), or both (random). Ignored for other types. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "hyphen" | "with-space" | "compact" | Plate rendering: hyphen (default), with a space, or compact. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "standard" | "custom" | "diplomatic" | "export" | "dealer" | "museum" | "trailer" | "military" | "motorcycle" | "aland" | Plate kind: standard, custom, diplomatic, export, dealer, museum, trailer, military, motorcycle, or aland. |
Request
curl https://api.real-fake-data.com/v1/fi/vehicle-registrationResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The plate in the requested format, e.g. "KOV-713". |
| type | "standard" | "custom" | "diplomatic" | "export" | "dealer" | "museum" | "trailer" | "military" | "motorcycle" | "aland" | Which kind of plate this is. |
| eraoptional | "current" | "legacy" | Format era; present only on the standard plate, where the eras visibly diverge. |
API reference
GET /v1/fi/y-tunnus
Try on playgroundReturns a valid Finnish Y-tunnus (business identity code) with a correct mod-11 check digit. Use `format` for the FI VAT number. Set `invalid=true` for a Y-tunnus with a deliberately wrong check digit.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case Y-tunnukset from the rare corners. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "national" | "vat" | Rendering: national `#######-#` form (default) or FI VAT number. |
| invalid | boolean | Return a Y-tunnus with a deliberately wrong mod-11 check digit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/fi/y-tunnusResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The identifier in the requested format (national or VAT). |
| digits | string | The canonical, unhyphenated 8-digit Y-tunnus. |
API reference
GET /v1/fr/company
Try on playgroundReturns a consistent synthetic French company in one call: a full trading name with its legal form, plus the matching siren. Shape the name with `strategy` and `legalForm` (as on `/v1/fr/company-name`). Set `invalid=true` to corrupt the checksummed identifiers (the name stays intact), for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case values from the rare corners. |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Corrupt the checksummed identifiers, for testing validators. |
| legalForm | "any" | "none" | "SARL" | "SAS" | "SA" | "EURL" | "SCI" | "SASU" | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family for the company name. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/fr/companyResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form, or `null` when none was added. |
| siren | string | The matching siren identifier. |
API reference
GET /v1/fr/company-name
Try on playgroundReturns a realistic synthetic French company name across the naming families (coined, owner-surname, descriptive, modern), with an optional trailing legal form in its authentic local form. Pin `strategy` or `legalForm`, set `legalForm=none` to omit it, or `edge=true` for the punctuation-heavy / long-form corners.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case names (punctuation-heavy families, long/rare forms). |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| legalForm | "any" | "none" | "SARL" | "SAS" | "SA" | "EURL" | "SCI" | "SASU" | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/fr/company-nameResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form (e.g. `GmbH`, `S.r.l.`), or `null` when none was added. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Which naming family produced the name. |
API reference
GET /v1/fr/email
Try on playgroundReturns a realistic synthetic French email address: a name-based local part (romanised to ASCII) on a free webmail, a French regional provider, or a corporate domain built from a French company brand. `domain` pins an exact domain; `domainCategory` (`free`/`regional`/`corporate`/`any`) scopes a weighted-random draw. `pattern` selects the local-part shape or `any`. `plusTag` controls plus-addressing; `exotic=true` allows the rarer RFC-valid characters.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| domain | stringpattern ^[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ | Pin an exact domain, e.g. "gmail.com". Overrides domainCategory. |
| domainCategory | "free" | "regional" | "corporate" | "any" | Scope the random domain draw: free webmail, regional providers, corporate domains, or any. |
| edge | boolean | Restrict output to edge-case addresses from the rare corners of the format. |
| exotic | boolean | Allow rarer RFC-valid local-part characters (%, =, ~). Off by default. |
| extreme | boolean | Return a correct address whose value is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). localPart, domain, and the decomposition stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | "any" | Local-part shape, e.g. "first.last"; "any" picks a weighted-random one. |
| plusTag | stringpattern ^[A-Za-z0-9_-]+$ | Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/fr/emailResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full email address, e.g. "anna.schmidt+news@mueller-bau.de". |
| localPart | string | The part before the `@`, including any plus tag. |
| domain | string | The domain, e.g. "gmail.com", "wp.pl", or "mueller-bau.de". |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | Which local-part pattern produced the address. |
| domainCategory | "free" | "regional" | "corporate" | Whether the domain is free, regional, or corporate. |
| company | string | The company name a corporate domain or company local-part was derived from, or `null`. |
| plusTag | string | The plus-addressing tag, or `null` when none. |
API reference
GET /v1/fr/iban
Try on playgroundReturns a valid French IBAN with a correct checksum. Pin the issuing bank with `bankCode` (5-digit bank code) or `bankName` (mutually exclusive), or let it be chosen at random. Set `invalid=true` to get an IBAN with deliberately wrong check digits, for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| bankCode | string | Pin the issuing bank by its 5-digit bank code. Mutually exclusive with bankName. |
| bankName | string | Pin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case IBANs from the rare corners of the format. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "grouped" | "compact" | IBAN rendering: grouped or compact. Default grouped. |
| invalid | boolean | Return an IBAN with deliberately wrong check digits, for testing validators. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/fr/ibanResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The IBAN in the requested format. |
| electronicFormat | string | The space-free electronic form of the IBAN. |
| bankCode | string | The bank identifier embedded in the IBAN. |
| bankName | string | Human-readable name of the issuing bank. |
API reference
GET /v1/fr/nir
Try on playgroundReturns a valid French NIR (numéro de sécurité sociale) with a correct control key. Constrain with `sex` and age/birth-date filters (year and month are encoded; the day is not). Contradictory combinations are rejected with a 400. Set `invalid=true` for a deliberately wrong key.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| atAge | integer | Exact age in years at request time. |
| bornAfter | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornBefore | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornOn | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case values. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| invalid | boolean | Return a NIR with a deliberately wrong control key; sex/year/month stay valid. |
| olderThan | integer | Minimum age in years at request time. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Encoded sex: "m" or "f". |
| youngerThan | integer | Maximum age in years at request time. |
Request
curl https://api.real-fake-data.com/v1/fr/nirResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The 15-character NIR. |
| digits | string | The canonical 15-character NIR. |
| sex | "m" | "f" | Encoded sex: `m` (1) or `f` (2). |
| birthYear | integer | The full four-digit birth year. |
| birthMonth | integer | The birth month, 1–12. |
API reference
GET /v1/fr/person
Try on playgroundReturns a synthetic French person: given name(s), surname, initials, birth date, and the matching NIR. Constrain with `sex` and age/birth-date filters (contradictory combinations are rejected with a 400). Set `invalid=true` for a deliberately wrong check value, `edge=true` for rare-corner values, and `caseStrict=false` to mangle the name casing.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| atAge | integer | Exact age in years at request time. |
| bornAfter | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornBefore | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornOn | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD. |
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname; initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias the number and name shape toward their rarely-exercised corners. |
| extreme | boolean | Return a correct person whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials, birthDate, and the national identifier stay clean. |
| invalid | boolean | Return a person whose NIR has a deliberately wrong check value. |
| olderThan | integer | Minimum age in years at request time. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Encoded sex: "m" or "f". |
| youngerThan | integer | Maximum age in years at request time. |
Request
curl https://api.real-fake-data.com/v1/fr/personResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s). |
| surname | string | Surname. |
| initials | string | Uppercase initials of name and surname, no dots. |
| birthDate | string | The birth date, ISO `YYYY-MM-DD`. |
| nir | string | The matching NIR. |
API reference
GET /v1/fr/person-name
Try on playgroundReturns a realistic synthetic French person name: given name(s), surname, and initials, in the local script. Use `sex` to pin the gendered form (`m`/`f`) or omit it for a random one. `edge=true` biases the name shape — second given names, double-barrelled surnames, and very short names become far more likely. Set `caseStrict=false` to deliberately mangle the name/surname casing (initials stay proper uppercase).
Query parameters
| Parameter | Type | Description |
|---|---|---|
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname (all-lower, all-upper, or random); initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias toward edge-case name shapes (second given names, double surnames, short names). |
| extreme | boolean | Return a correct name whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Gendered form of the name: "m" or "f". Omit for random. |
Request
curl https://api.real-fake-data.com/v1/fr/person-nameResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s), in the local script, agreeing with the reported sex. |
| surname | string | Surname in the form matching the sex (inflected where the language requires it). |
| initials | string | Uppercase initials of name and surname, no dots, e.g. `JK`. |
| sex | "m" | "f" | The sex the name was inflected for. |
API reference
GET /v1/fr/offering
Try on playgroundReturns a realistic synthetic French offering — a product or service with a localized name, a plausible EUR price, its unit, and its industry label. Pin `industry` (NACE code), `type` (product/service), or filter by `industryName`/`offeringName` full text. Set `edge=true` for the price/format corners, `extreme=true` for a hostile-encoded name, or `invalid=true` for a broken record.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict to edge-case offerings (price-band extremes, unusual units, long names). |
| extreme | boolean | Return a correct offering whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, homoglyphs, or bidi marks). Price, unit and industry label stay clean. |
| industry | "73" | "28.3" | "93.2" | "71" | "90" | "29.3" | "10.7" | "64" | "56.30" | "11" | "30.1" | "47.6" | "26.7" | "95.3" | "56.21" | "23.4" | "81.2" | "14" | "95.1" | "26.2" | "41" | "70" | "26.4" | "49.4" | "10.5" | "74.1" | "85" | "43.2" | "82.3" | "59" | "56.12" | "31" | "92" | "81.3" | "23.1" | "47.1" | "96.2" | "27.5" | "86.1" | "55" | "65" | "32.1" | "96.1" | "15" | "69" | "86.2" | "91.2" | "32.2" | "21" | "74.2" | "58" | "68" | "78" | "43.3" | "77" | "56.11" | "80" | "62" | "10.8" | "93.1" | "32.3" | "61" | "13" | "32.4" | "74.3" | "79" | "75" | "63" | "16" | Pin the industry by NACE code. Omit to draw across all covered industries. |
| industryName | string | Full-text filter: keep offerings whose localized industry label contains this. |
| invalid | boolean | Return a deliberately invalid offering (a price outside its band, a negative price, or an empty name) for negative-path testing. Cannot combine with edge/extreme. |
| language | "fr" | Pin the name language. Omit for the country’s weighted mix. |
| offeringName | string | Full-text filter: keep offerings whose localized name contains this. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "product" | "service" | Restrict to products or services. Omit for both. |
Request
curl https://api.real-fake-data.com/v1/fr/offeringResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The offering name in the resolved language. |
| offeringName | string | The full offering name (alias of `value`). |
| kind | "product" | "service" | Whether it is a good or a rendered service. |
| unit | string | The unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …). |
| price | integer | A single plausible price, in EUR minor units (cents). |
| currency | "EUR" | Currency of `price`; always EUR. |
| industryCode | string | NACE Rev. 2.1 code of the offering’s industry. |
| industryName | string | The localized industry label in the resolved language. |
| language | string | BCP-47 subtag used for this record’s names. |
API reference
GET /v1/fr/siren
Try on playgroundReturns a valid French SIREN (company identifier) with a correct Luhn checksum. Use `format` for the 14-digit SIRET or the FR VAT number. Set `invalid=true` for a SIREN with a deliberately wrong check digit.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case SIRENs from the rare corners. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "siren" | "siret" | "vat" | Rendering: bare SIREN (default), 14-digit SIRET, or FR VAT number. |
| invalid | boolean | Return a SIREN with a deliberately wrong Luhn check digit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/fr/sirenResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The identifier in the requested format (SIREN, SIRET, or VAT). |
| digits | string | The canonical 9-digit SIREN. |
API reference
GET /v1/fr/vehicle-registration
Try on playgroundReturns a realistic French vehicle registration plate. `type` selects the kind: `standard` (default, SIV `LL-NNN-LL`, e.g. AB-126-FD), `diplomatic` (`NNN CD NNNN`), `temporary` (`WW-NNN-LL` / `W-NNN-LL`), `export` (`NNN TT NN`), or `motorcycle` (`LL-NN-L`). `era` chooses the scheme: `current` (default, 2009+ SIV), `legacy` (old FNI `NNNN LL NN`, whose last two digits are the département code), or `both`. A current standard plate can carry the optional cosmetic département band via `withDepartment` (random) or `department` (forced; an unknown identifier is a 400). France issues no vanity plates and no plate carries a checksum. Use `format` to choose hyphenated, spaced, or compact rendering.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| department | string | Force the département to a code or name (e.g. 75, 2A, Paris). Standard plates only. |
| edge | boolean | Restrict output to edge-case plates from the rare corners of the format. |
| era | "current" | "legacy" | "both" | Registration era: current (2009+ SIV), legacy (old FNI), or both. Default current. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "hyphen" | "with-space" | "compact" | Plate rendering: hyphenated, spaced, or compact. Default hyphen. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "standard" | "diplomatic" | "temporary" | "export" | "motorcycle" | Plate kind: standard, diplomatic, temporary, export, or motorcycle. |
| withDepartment | boolean | Attach a random cosmetic département band to a current standard plate. |
Request
curl https://api.real-fake-data.com/v1/fr/vehicle-registrationResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The plate in the requested format, e.g. "AB-126-FD" or "1234 AB 75". |
| type | "standard" | "diplomatic" | "temporary" | "export" | "motorcycle" | Which kind of plate this is. |
| era | "current" | "legacy" | Which era format was produced: current (2009+ SIV) or legacy (old FNI). |
| departmentoptional | string | The département identifier (e.g. 75, 2A, 971). Present on a legacy plate always, and on a current standard plate only when a département band was requested. |
API reference
GET /v1/de/company
Try on playgroundReturns a consistent synthetic German company in one call: a full trading name with its legal form, plus the matching handelsregisternummer, ustIdnr, wirtschaftsIdnr. Shape the name with `strategy` and `legalForm` (as on `/v1/de/company-name`). Set `invalid=true` to corrupt the checksummed identifiers (the name stays intact), for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case values from the rare corners. |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Corrupt the checksummed identifiers, for testing validators. |
| legalForm | "any" | "none" | "GmbH" | "GmbH & Co. KG" | "UG (haftungsbeschränkt)" | "AG" | "GbR" | "OHG" | "KG" | "e.K." | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family for the company name. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/de/companyResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form, or `null` when none was added. |
| handelsregisternummer | string | The matching handelsregisternummer identifier. |
| ustIdnr | string | The matching ust-idnr identifier. |
| wirtschaftsIdnr | string | The matching wirtschafts-idnr identifier. |
API reference
GET /v1/de/company-name
Try on playgroundReturns a realistic synthetic German company name across the naming families (coined, owner-surname, descriptive, modern), with an optional trailing legal form in its authentic local form. Pin `strategy` or `legalForm`, set `legalForm=none` to omit it, or `edge=true` for the punctuation-heavy / long-form corners.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case names (punctuation-heavy families, long/rare forms). |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| legalForm | "any" | "none" | "GmbH" | "GmbH & Co. KG" | "UG (haftungsbeschränkt)" | "AG" | "GbR" | "OHG" | "KG" | "e.K." | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/de/company-nameResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form (e.g. `GmbH`, `S.r.l.`), or `null` when none was added. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Which naming family produced the name. |
API reference
GET /v1/de/email
Try on playgroundReturns a realistic synthetic German email address: a name-based local part (romanised to ASCII) on a free webmail, a German regional provider, or a corporate domain built from a German company brand. `domain` pins an exact domain; `domainCategory` (`free`/`regional`/`corporate`/`any`) scopes a weighted-random draw. `pattern` selects the local-part shape or `any`. `plusTag` controls plus-addressing; `exotic=true` allows the rarer RFC-valid characters.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| domain | stringpattern ^[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ | Pin an exact domain, e.g. "gmail.com". Overrides domainCategory. |
| domainCategory | "free" | "regional" | "corporate" | "any" | Scope the random domain draw: free webmail, regional providers, corporate domains, or any. |
| edge | boolean | Restrict output to edge-case addresses from the rare corners of the format. |
| exotic | boolean | Allow rarer RFC-valid local-part characters (%, =, ~). Off by default. |
| extreme | boolean | Return a correct address whose value is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). localPart, domain, and the decomposition stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | "any" | Local-part shape, e.g. "first.last"; "any" picks a weighted-random one. |
| plusTag | stringpattern ^[A-Za-z0-9_-]+$ | Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/de/emailResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full email address, e.g. "anna.schmidt+news@mueller-bau.de". |
| localPart | string | The part before the `@`, including any plus tag. |
| domain | string | The domain, e.g. "gmail.com", "wp.pl", or "mueller-bau.de". |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | Which local-part pattern produced the address. |
| domainCategory | "free" | "regional" | "corporate" | Whether the domain is free, regional, or corporate. |
| company | string | The company name a corporate domain or company local-part was derived from, or `null`. |
| plusTag | string | The plus-addressing tag, or `null` when none. |
API reference
GET /v1/de/handelsregisternummer
Try on playgroundReturns a German Handelsregisternummer (commercial-register number) with a register division (`HRA` / `HRB`), a keeping court, and a sequential serial. The number carries no checksum, so there is no invalid mode.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| division | "HRA" | "HRB" | Register division: HRA (sole traders / partnerships) or HRB (corporations). |
| edge | boolean | Restrict output to valid edge-case serials (very low or very high). |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/de/handelsregisternummerResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full register number, e.g. "HRB 246975". |
| division | "HRA" | "HRB" | The register division: HRA or HRB. |
| court | string | The keeping court (Amtsgericht), e.g. "Berlin (Charlottenburg)". |
| number | string | The sequential serial number (no leading zeros). |
API reference
GET /v1/de/iban
Try on playgroundReturns a valid German IBAN with a correct checksum. Pin the issuing bank with `bankCode` (8-digit BLZ) or `bankName` (mutually exclusive), or let it be chosen at random. Set `invalid=true` to get an IBAN with deliberately wrong check digits, for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| bankCode | string | Pin the issuing bank by its 8-digit BLZ. Mutually exclusive with bankName. |
| bankName | string | Pin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case IBANs from the rare corners of the format. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "grouped" | "compact" | IBAN rendering: grouped or compact. Default grouped. |
| invalid | boolean | Return an IBAN with deliberately wrong check digits, for testing validators. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/de/ibanResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The IBAN in the requested format. |
| electronicFormat | string | The space-free electronic form of the IBAN. |
| bankCode | string | The bank identifier embedded in the IBAN. |
| bankName | string | Human-readable name of the issuing bank. |
API reference
GET /v1/de/person
Try on playgroundReturns a synthetic German person: given name(s), surname, initials, birth date, and the matching Steuer-ID. Constrain with `sex` and age/birth-date filters (contradictory combinations are rejected with a 400). Set `invalid=true` for a deliberately wrong check value, `edge=true` for rare-corner values, and `caseStrict=false` to mangle the name casing.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| atAge | integer | Exact age in years at request time. |
| bornAfter | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornBefore | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornOn | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD. |
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname; initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias the number and name shape toward their rarely-exercised corners. |
| extreme | boolean | Return a correct person whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials, birthDate, and the national identifier stay clean. |
| invalid | boolean | Return a person whose Steuer-ID has a deliberately wrong check value. |
| olderThan | integer | Minimum age in years at request time. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Encoded sex: "m" or "f". |
| youngerThan | integer | Maximum age in years at request time. |
Request
curl https://api.real-fake-data.com/v1/de/personResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s). |
| surname | string | Surname. |
| initials | string | Uppercase initials of name and surname, no dots. |
| birthDate | string | The birth date, ISO `YYYY-MM-DD`. |
| steuerId | string | The matching Steuer-ID. |
API reference
GET /v1/de/person-name
Try on playgroundReturns a realistic synthetic German person name: given name(s), surname, and initials, with German orthography (umlauts, ß). Use `sex` to pin the gendered form (`m`/`f`) or omit it for a random one. `edge=true` biases the name shape — second given names, double-barrelled surnames, and very short names become far more likely. Set `caseStrict=false` to deliberately mangle the name/surname casing (initials stay proper uppercase).
Query parameters
| Parameter | Type | Description |
|---|---|---|
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname (all-lower, all-upper, or random); initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias toward edge-case name shapes (second given names, double surnames, short names). |
| extreme | boolean | Return a correct name whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Gendered form of the name: "m" or "f". Omit for random. |
Request
curl https://api.real-fake-data.com/v1/de/person-nameResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s), in the local script, agreeing with the reported sex. |
| surname | string | Surname in the form matching the sex (inflected where the language requires it). |
| initials | string | Uppercase initials of name and surname, no dots, e.g. `JK`. |
| sex | "m" | "f" | The sex the name was inflected for. |
API reference
GET /v1/de/personalausweis
Try on playgroundReturns a valid German Personalausweis document number: a 9-character serial from a restricted alphabet plus a correct ICAO 9303 check digit. It encodes no personal data. Set `invalid=true` for a number with a deliberately wrong check digit.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case document numbers from the rare corners. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| invalid | boolean | Return a document number with a deliberately wrong ICAO 9303 check digit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/de/personalausweisResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full 10-character document number. |
| serial | string | The 9-character serial (no check digit). |
| checkDigit | integer | The single ICAO 9303 check digit (0–9). |
API reference
GET /v1/de/offering
Try on playgroundReturns a realistic synthetic German offering — a product or service with a localized name, a plausible EUR price, its unit, and its industry label. Pin `industry` (NACE code), `type` (product/service), or filter by `industryName`/`offeringName` full text. Set `edge=true` for the price/format corners, `extreme=true` for a hostile-encoded name, or `invalid=true` for a broken record.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict to edge-case offerings (price-band extremes, unusual units, long names). |
| extreme | boolean | Return a correct offering whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, homoglyphs, or bidi marks). Price, unit and industry label stay clean. |
| industry | "73" | "28.3" | "93.2" | "71" | "90" | "29.3" | "10.7" | "64" | "56.30" | "11" | "30.1" | "47.6" | "26.7" | "95.3" | "56.21" | "23.4" | "81.2" | "14" | "95.1" | "26.2" | "41" | "70" | "26.4" | "49.4" | "10.5" | "74.1" | "85" | "43.2" | "82.3" | "59" | "56.12" | "31" | "92" | "81.3" | "23.1" | "47.1" | "96.2" | "27.5" | "86.1" | "55" | "65" | "32.1" | "96.1" | "15" | "69" | "86.2" | "91.2" | "32.2" | "21" | "74.2" | "58" | "68" | "78" | "43.3" | "77" | "56.11" | "80" | "62" | "10.8" | "93.1" | "32.3" | "61" | "13" | "32.4" | "74.3" | "79" | "75" | "63" | "16" | Pin the industry by NACE code. Omit to draw across all covered industries. |
| industryName | string | Full-text filter: keep offerings whose localized industry label contains this. |
| invalid | boolean | Return a deliberately invalid offering (a price outside its band, a negative price, or an empty name) for negative-path testing. Cannot combine with edge/extreme. |
| language | "de" | Pin the name language. Omit for the country’s weighted mix. |
| offeringName | string | Full-text filter: keep offerings whose localized name contains this. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "product" | "service" | Restrict to products or services. Omit for both. |
Request
curl https://api.real-fake-data.com/v1/de/offeringResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The offering name in the resolved language. |
| offeringName | string | The full offering name (alias of `value`). |
| kind | "product" | "service" | Whether it is a good or a rendered service. |
| unit | string | The unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …). |
| price | integer | A single plausible price, in EUR minor units (cents). |
| currency | "EUR" | Currency of `price`; always EUR. |
| industryCode | string | NACE Rev. 2.1 code of the offering’s industry. |
| industryName | string | The localized industry label in the resolved language. |
| language | string | BCP-47 subtag used for this record’s names. |
API reference
GET /v1/de/steuer-id
Try on playgroundReturns a valid German Steuer-IdNr (personal tax identification number) with a correct ISO 7064 MOD 11,10 check digit. The number is non-semantic. Set `invalid=true` for a number with a deliberately wrong check digit.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case Steuer-IdNrs from the rare corners. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| invalid | boolean | Return a Steuer-IdNr with a deliberately wrong ISO 7064 check digit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/de/steuer-idResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full 11-digit Steuer-IdNr. |
| digits | string | The same 11 digits (no separators). |
API reference
GET /v1/de/ust-idnr
Try on playgroundReturns a valid German USt-IdNr (VAT identification number) with a correct ISO 7064 MOD 11,10 check digit. Use `format=national` for the bare nine-digit core. Set `invalid=true` for a number with a deliberately wrong check digit.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case USt-IdNrs from the rare corners. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "national" | "vat" | Rendering: bare nine-digit national core, or DE-prefixed VAT number (default). |
| invalid | boolean | Return a USt-IdNr with a deliberately wrong ISO 7064 check digit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/de/ust-idnrResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The USt-IdNr in the requested format (VAT or national). |
| digits | string | The canonical, unprefixed nine-digit core. |
API reference
GET /v1/de/vehicle-registration
Try on playgroundReturns a realistic German vehicle registration plate (Kfz-Kennzeichen). `type` selects the kind: `standard` (default, `<DISTRICT> LL NNNN`, e.g. M AB 1234), `custom` (Wunschkennzeichen), `seasonal` (Saisonkennzeichen), `historic` (trailing H), `electric` (trailing E), `motorcycle`, `military` (`Y-NNN NNN`, no district), or `diplomatic` (`0-MM-NNN`, no district). `district` forces the Unterscheidungszeichen (an unknown code is a 400) and is ignored by military/diplomatic. `era` picks the recognition alphabet: `current`, `legacy` (pre-2000 reduced set), or `both`. No German plate carries a checksum, so there is no invalid variant. Use `format` to choose spaced or compact rendering.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| district | string | Force the district code (Unterscheidungszeichen), e.g. M, HH, GÖ. Umlaut-sensitive; an unknown code is a 400. Ignored for military/diplomatic. |
| edge | boolean | Restrict output to edge-case plates from the rare corners of the format. |
| era | "current" | "legacy" | "both" | Recognition alphabet: current (full A–Z), legacy (pre-2000 reduced set), or both (mixed per call). Default current. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "with-space" | "compact" | Plate rendering: with a space or compact. Default with-space. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "standard" | "custom" | "seasonal" | "historic" | "electric" | "motorcycle" | "military" | "diplomatic" | Plate kind: standard, custom, seasonal, historic, electric, motorcycle, military, or diplomatic. |
Request
curl https://api.real-fake-data.com/v1/de/vehicle-registrationResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The plate in the requested format, e.g. "M AB 1234". |
| type | "standard" | "custom" | "seasonal" | "historic" | "electric" | "motorcycle" | "military" | "diplomatic" | Which kind of plate this is. |
| districtoptional | string | The Unterscheidungszeichen (1–3 letter district code, e.g. M, HH, GÖ); absent for military/diplomatic. |
| stateoptional | string | The Bundesland (federal state) the district code belongs to, e.g. Bayern. |
| cityoptional | string | The Stadt or Landkreis whose office issues the code, e.g. München. |
API reference
GET /v1/de/wirtschafts-idnr
Try on playgroundReturns a valid German Wirtschafts-IdNr (business identification number): a `DE`-prefixed nine-digit core with a correct ISO 7064 MOD 11,10 check digit plus a five-digit distinguishing suffix. Use `suffix` to set it. Set `invalid=true` for a number with a deliberately wrong check digit.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case suffixes (smallest and largest). |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| invalid | boolean | Return a W-IdNr whose nine-digit core has a deliberately wrong ISO 7064 check digit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| suffix | integer | Five-digit distinguishing suffix as a number (1..99999); rendered zero-padded. |
Request
curl https://api.real-fake-data.com/v1/de/wirtschafts-idnrResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full identifier, e.g. "DE123456789-00001". |
| digits | string | The canonical nine-digit core (no DE prefix, no suffix). |
| suffix | string | The five-digit distinguishing suffix, e.g. "00001". |
API reference
GET /v1/gr/afm
Try on playgroundReturns a valid Greek AFM (tax registration number, used by both persons and companies) with a correct check digit. Use `format=vat` for the EL-prefixed VAT number. Set `invalid=true` for an AFM with a deliberately wrong check digit.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case AFMs from the rare corners. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "national" | "vat" | Rendering: bare 9-digit AFM (default), or the EL-prefixed VAT number. |
| invalid | boolean | Return an AFM with a deliberately wrong check digit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/gr/afmResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The identifier in the requested format (national or VAT). |
| digits | string | The canonical, unprefixed 9-digit AFM. |
API reference
GET /v1/gr/amka
Try on playgroundReturns a valid Greek AMKA (social-security number) with a correct Luhn check digit. Constrain with `sex` and age/birth-date filters (the full birth date is encoded). Contradictory combinations are rejected with a 400. Set `invalid=true` for a deliberately wrong check digit.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| atAge | integer | Exact age in years at request time. |
| bornAfter | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornBefore | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornOn | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case values. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| invalid | boolean | Return an AMKA with a deliberately wrong Luhn check digit; date/sex stay valid. |
| olderThan | integer | Minimum age in years at request time. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Encoded sex: "m" or "f". |
| youngerThan | integer | Maximum age in years at request time. |
Request
curl https://api.real-fake-data.com/v1/gr/amkaResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The canonical 11-digit AMKA. |
| digits | string | The 11 AMKA digits, identical to `value`. |
| birthDate | string | The encoded birth date, ISO `YYYY-MM-DD`. |
| sex | "m" | "f" | Encoded sex: `m` (odd) or `f` (even) 10th digit. |
API reference
GET /v1/gr/company
Try on playgroundReturns a consistent synthetic Greek company in one call: a full trading name with its legal form, plus the matching afm. Shape the name with `strategy` and `legalForm` (as on `/v1/gr/company-name`). Set `invalid=true` to corrupt the checksummed identifiers (the name stays intact), for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case values from the rare corners. |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Corrupt the checksummed identifiers, for testing validators. |
| legalForm | "any" | "none" | "Ε.Π.Ε." | "Ι.Κ.Ε." | "Α.Ε." | "Ο.Ε." | "Ε.Ε." | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family for the company name. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/gr/companyResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form, or `null` when none was added. |
| afm | string | The matching afm identifier. |
API reference
GET /v1/gr/company-name
Try on playgroundReturns a realistic synthetic Greek company name across the naming families (coined, owner-surname, descriptive, modern), with an optional trailing legal form in its authentic local form. Pin `strategy` or `legalForm`, set `legalForm=none` to omit it, or `edge=true` for the punctuation-heavy / long-form corners.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case names (punctuation-heavy families, long/rare forms). |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| legalForm | "any" | "none" | "Ε.Π.Ε." | "Ι.Κ.Ε." | "Α.Ε." | "Ο.Ε." | "Ε.Ε." | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/gr/company-nameResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form (e.g. `GmbH`, `S.r.l.`), or `null` when none was added. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Which naming family produced the name. |
API reference
GET /v1/gr/email
Try on playgroundReturns a realistic synthetic Greek email address: a name-based local part (romanised to ASCII) on a free webmail, a Greek regional provider, or a corporate domain built from a Greek company brand. `domain` pins an exact domain; `domainCategory` (`free`/`regional`/`corporate`/`any`) scopes a weighted-random draw. `pattern` selects the local-part shape or `any`. `plusTag` controls plus-addressing; `exotic=true` allows the rarer RFC-valid characters.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| domain | stringpattern ^[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ | Pin an exact domain, e.g. "gmail.com". Overrides domainCategory. |
| domainCategory | "free" | "regional" | "corporate" | "any" | Scope the random domain draw: free webmail, regional providers, corporate domains, or any. |
| edge | boolean | Restrict output to edge-case addresses from the rare corners of the format. |
| exotic | boolean | Allow rarer RFC-valid local-part characters (%, =, ~). Off by default. |
| extreme | boolean | Return a correct address whose value is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). localPart, domain, and the decomposition stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | "any" | Local-part shape, e.g. "first.last"; "any" picks a weighted-random one. |
| plusTag | stringpattern ^[A-Za-z0-9_-]+$ | Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/gr/emailResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full email address, e.g. "anna.schmidt+news@mueller-bau.de". |
| localPart | string | The part before the `@`, including any plus tag. |
| domain | string | The domain, e.g. "gmail.com", "wp.pl", or "mueller-bau.de". |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | Which local-part pattern produced the address. |
| domainCategory | "free" | "regional" | "corporate" | Whether the domain is free, regional, or corporate. |
| company | string | The company name a corporate domain or company local-part was derived from, or `null`. |
| plusTag | string | The plus-addressing tag, or `null` when none. |
API reference
GET /v1/gr/iban
Try on playgroundReturns a valid Greek IBAN with a correct checksum. Pin the issuing bank with `bankCode` (3-digit bank code) or `bankName` (mutually exclusive), or let it be chosen at random. Set `invalid=true` to get an IBAN with deliberately wrong check digits, for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| bankCode | string | Pin the issuing bank by its 3-digit bank code. Mutually exclusive with bankName. |
| bankName | string | Pin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case IBANs from the rare corners of the format. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "grouped" | "compact" | IBAN rendering: grouped or compact. Default grouped. |
| invalid | boolean | Return an IBAN with deliberately wrong check digits, for testing validators. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/gr/ibanResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The IBAN in the requested format. |
| electronicFormat | string | The space-free electronic form of the IBAN. |
| bankCode | string | The bank identifier embedded in the IBAN. |
| bankName | string | Human-readable name of the issuing bank. |
API reference
GET /v1/gr/person
Try on playgroundReturns a synthetic Greek person: given name(s), surname, initials, birth date, and the matching AMKA. Constrain with `sex` and age/birth-date filters (contradictory combinations are rejected with a 400). Set `invalid=true` for a deliberately wrong check value, `edge=true` for rare-corner values, and `caseStrict=false` to mangle the name casing.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| atAge | integer | Exact age in years at request time. |
| bornAfter | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornBefore | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornOn | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD. |
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname; initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias the number and name shape toward their rarely-exercised corners. |
| extreme | boolean | Return a correct person whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials, birthDate, and the national identifier stay clean. |
| invalid | boolean | Return a person whose AMKA has a deliberately wrong check value. |
| olderThan | integer | Minimum age in years at request time. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Encoded sex: "m" or "f". |
| youngerThan | integer | Maximum age in years at request time. |
Request
curl https://api.real-fake-data.com/v1/gr/personResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s). |
| surname | string | Surname. |
| initials | string | Uppercase initials of name and surname, no dots. |
| birthDate | string | The birth date, ISO `YYYY-MM-DD`. |
| amka | string | The matching AMKA. |
API reference
GET /v1/gr/person-name
Try on playgroundReturns a realistic synthetic Greek person name: given name(s), surname, and initials, in the local script. Use `sex` to pin the gendered form (`m`/`f`) or omit it for a random one. `edge=true` biases the name shape — second given names, double-barrelled surnames, and very short names become far more likely. Set `caseStrict=false` to deliberately mangle the name/surname casing (initials stay proper uppercase).
Query parameters
| Parameter | Type | Description |
|---|---|---|
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname (all-lower, all-upper, or random); initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias toward edge-case name shapes (second given names, double surnames, short names). |
| extreme | boolean | Return a correct name whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Gendered form of the name: "m" or "f". Omit for random. |
Request
curl https://api.real-fake-data.com/v1/gr/person-nameResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s), in the local script, agreeing with the reported sex. |
| surname | string | Surname in the form matching the sex (inflected where the language requires it). |
| initials | string | Uppercase initials of name and surname, no dots, e.g. `JK`. |
| sex | "m" | "f" | The sex the name was inflected for. |
API reference
GET /v1/gr/offering
Try on playgroundReturns a realistic synthetic Greek offering — a product or service with a localized name, a plausible EUR price, its unit, and its industry label. Pin `industry` (NACE code), `type` (product/service), or filter by `industryName`/`offeringName` full text. Set `edge=true` for the price/format corners, `extreme=true` for a hostile-encoded name, or `invalid=true` for a broken record.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict to edge-case offerings (price-band extremes, unusual units, long names). |
| extreme | boolean | Return a correct offering whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, homoglyphs, or bidi marks). Price, unit and industry label stay clean. |
| industry | "73" | "28.3" | "93.2" | "71" | "90" | "29.3" | "10.7" | "64" | "56.30" | "11" | "30.1" | "47.6" | "26.7" | "95.3" | "56.21" | "23.4" | "81.2" | "14" | "95.1" | "26.2" | "41" | "70" | "26.4" | "49.4" | "10.5" | "74.1" | "85" | "43.2" | "82.3" | "59" | "56.12" | "31" | "92" | "81.3" | "23.1" | "47.1" | "96.2" | "27.5" | "86.1" | "55" | "65" | "32.1" | "96.1" | "15" | "69" | "86.2" | "91.2" | "32.2" | "21" | "74.2" | "58" | "68" | "78" | "43.3" | "77" | "56.11" | "80" | "62" | "10.8" | "93.1" | "32.3" | "61" | "13" | "32.4" | "74.3" | "79" | "75" | "63" | "16" | Pin the industry by NACE code. Omit to draw across all covered industries. |
| industryName | string | Full-text filter: keep offerings whose localized industry label contains this. |
| invalid | boolean | Return a deliberately invalid offering (a price outside its band, a negative price, or an empty name) for negative-path testing. Cannot combine with edge/extreme. |
| language | "el" | Pin the name language. Omit for the country’s weighted mix. |
| offeringName | string | Full-text filter: keep offerings whose localized name contains this. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "product" | "service" | Restrict to products or services. Omit for both. |
Request
curl https://api.real-fake-data.com/v1/gr/offeringResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The offering name in the resolved language. |
| offeringName | string | The full offering name (alias of `value`). |
| kind | "product" | "service" | Whether it is a good or a rendered service. |
| unit | string | The unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …). |
| price | integer | A single plausible price, in EUR minor units (cents). |
| currency | "EUR" | Currency of `price`; always EUR. |
| industryCode | string | NACE Rev. 2.1 code of the offering’s industry. |
| industryName | string | The localized industry label in the resolved language. |
| language | string | BCP-47 subtag used for this record’s names. |
API reference
GET /v1/gr/vehicle-registration
Try on playgroundReturns a realistic Greek vehicle registration plate. `type` selects the kind: `standard` (default, `LLL-NNNN`, e.g. ZMH-4471), `motorcycle` (same mask), `taxi` (`TAL-NNNN`), `diplomatic` (`DS NN CD`), `historic` (`IO-NNNNN`), or `trailer` (`P-NNNNN`). The region-encoding types (`standard`, `motorcycle`) draw a real prefecture code, which you can pin with `region` (an unknown region is a 400). `script` renders the letters in the interoperable Latin lookalike (default) or the real Greek glyphs; `era` chooses the post-1983 `current` scheme, the still-valid `legacy` numeric-only / two-letter formats, or `both`. Greece issues no vanity plates and no plate carries a checksum. Use `format` to choose hyphen, spaced, or compact rendering.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case plates from the rare corners of the format. |
| era | "current" | "legacy" | "both" | Format generation: current (post-1983), legacy (numeric-only / two-letter), or both. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "hyphen" | "with-space" | "compact" | Plate rendering: hyphen (default), with-space, or compact. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| region | string | Pin the region code to a prefecture (or Athens / Thessaloniki). Region-encoding types only; an unknown region is a 400. |
| script | "latin" | "native" | Letter script: latin (interoperable lookalike, default) or native Greek glyphs. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "standard" | "motorcycle" | "taxi" | "diplomatic" | "historic" | "trailer" | Plate kind: standard, motorcycle, taxi, diplomatic, historic, or trailer. |
Request
curl https://api.real-fake-data.com/v1/gr/vehicle-registrationResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The plate in the requested script and format, e.g. "ZMH-4471" or "ΖΜΗ-4471". |
| type | "standard" | "motorcycle" | "taxi" | "diplomatic" | "historic" | "trailer" | Which kind of plate this is. |
| regionoptional | string | The prefecture (or Athens/Thessaloniki) whose code opens the plate; region-encoding current-era types only. |
| regionCodeoptional | string | The Latin-lookalike region code that opens the plate (e.g. AX, N, HP); present alongside region. |
API reference
GET /v1/hu/adoazonosito-jel
Try on playgroundReturns a valid Hungarian adóazonosító jel (personal tax identification number) with a correct mod-11 check digit. The number encodes a birth date but no sex; constrain it with age/birth-date filters. Contradictory combinations are rejected with a 400. Set `invalid=true` for a deliberately wrong check digit.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| atAge | integer | Exact age in years at request time. |
| bornAfter | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornBefore | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornOn | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case values. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| invalid | boolean | Return a number with a deliberately wrong mod-11 check digit; the birth date stays valid. |
| olderThan | integer | Minimum age in years at request time. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| youngerThan | integer | Maximum age in years at request time. |
Request
curl https://api.real-fake-data.com/v1/hu/adoazonosito-jelResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The adóazonosító jel as a bare 10-digit string. |
| digits | string | The canonical 10-digit number. |
| birthDate | string | The encoded birth date, ISO `YYYY-MM-DD`. |
API reference
GET /v1/hu/adoszam
Try on playgroundReturns a valid Hungarian adószám (company tax number) with a correct törzsszám check digit. Use `format` for the full national number or the HU VAT form. Set `invalid=true` for a number with a deliberately wrong check digit.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case numbers from the rare corners. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "national" | "vat" | Rendering: full national number (default) or HU VAT number. |
| invalid | boolean | Return a number with a deliberately wrong törzsszám check digit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/hu/adoszamResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The adószám in the requested format (national or VAT). |
| digits | string | The canonical 8-digit törzsszám. |
API reference
GET /v1/hu/cegjegyzekszam
Try on playgroundReturns a valid Hungarian cégjegyzékszám (company registration number), formatted `BB-CF-NNNNNN`: a 2-digit court code, a 2-digit company-form code, and a 6-digit serial. It carries no checksum. Set `edge=true` to restrict output to valid edge cases.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case numbers from the rare corners. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/hu/cegjegyzekszamResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The number formatted `BB-CF-NNNNNN`, e.g. `01-09-123456`. |
| court | integer | The 2-digit court code (`BB`). |
| form | integer | The 2-digit company-form code (`CF`). |
| serial | integer | The 6-digit serial (`NNNNNN`). |
| digits | string | The canonical 10-digit number, no separators. |
API reference
GET /v1/hu/company
Try on playgroundReturns a consistent synthetic Hungarian company in one call: a full trading name with its legal form, plus the matching cegjegyzekszam, adoszam. Shape the name with `strategy` and `legalForm` (as on `/v1/hu/company-name`). Set `invalid=true` to corrupt the checksummed identifiers (the name stays intact), for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case values from the rare corners. |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Corrupt the checksummed identifiers, for testing validators. |
| legalForm | "any" | "none" | "Kft." | "Zrt." | "Bt." | "Nyrt." | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family for the company name. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/hu/companyResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form, or `null` when none was added. |
| cegjegyzekszam | string | The matching cegjegyzekszam identifier. |
| adoszam | string | The matching adoszam identifier. |
API reference
GET /v1/hu/company-name
Try on playgroundReturns a realistic synthetic Hungarian company name across the naming families (coined, owner-surname, descriptive, modern), with an optional trailing legal form in its authentic local form. Pin `strategy` or `legalForm`, set `legalForm=none` to omit it, or `edge=true` for the punctuation-heavy / long-form corners.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case names (punctuation-heavy families, long/rare forms). |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| legalForm | "any" | "none" | "Kft." | "Zrt." | "Bt." | "Nyrt." | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/hu/company-nameResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form (e.g. `GmbH`, `S.r.l.`), or `null` when none was added. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Which naming family produced the name. |
API reference
GET /v1/hu/email
Try on playgroundReturns a realistic synthetic Hungarian email address: a name-based local part (romanised to ASCII) on a free webmail, a Hungarian regional provider, or a corporate domain built from a Hungarian company brand. `domain` pins an exact domain; `domainCategory` (`free`/`regional`/`corporate`/`any`) scopes a weighted-random draw. `pattern` selects the local-part shape or `any`. `plusTag` controls plus-addressing; `exotic=true` allows the rarer RFC-valid characters.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| domain | stringpattern ^[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ | Pin an exact domain, e.g. "gmail.com". Overrides domainCategory. |
| domainCategory | "free" | "regional" | "corporate" | "any" | Scope the random domain draw: free webmail, regional providers, corporate domains, or any. |
| edge | boolean | Restrict output to edge-case addresses from the rare corners of the format. |
| exotic | boolean | Allow rarer RFC-valid local-part characters (%, =, ~). Off by default. |
| extreme | boolean | Return a correct address whose value is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). localPart, domain, and the decomposition stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | "any" | Local-part shape, e.g. "first.last"; "any" picks a weighted-random one. |
| plusTag | stringpattern ^[A-Za-z0-9_-]+$ | Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/hu/emailResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full email address, e.g. "anna.schmidt+news@mueller-bau.de". |
| localPart | string | The part before the `@`, including any plus tag. |
| domain | string | The domain, e.g. "gmail.com", "wp.pl", or "mueller-bau.de". |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | Which local-part pattern produced the address. |
| domainCategory | "free" | "regional" | "corporate" | Whether the domain is free, regional, or corporate. |
| company | string | The company name a corporate domain or company local-part was derived from, or `null`. |
| plusTag | string | The plus-addressing tag, or `null` when none. |
API reference
GET /v1/hu/iban
Try on playgroundReturns a valid Hungarian IBAN with a correct checksum. Pin the issuing bank with `bankCode` (3-digit bank code) or `bankName` (mutually exclusive), or let it be chosen at random. Set `invalid=true` to get an IBAN with deliberately wrong check digits, for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| bankCode | string | Pin the issuing bank by its 3-digit bank code. Mutually exclusive with bankName. |
| bankName | string | Pin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case IBANs from the rare corners of the format. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "grouped" | "compact" | IBAN rendering: grouped or compact. Default grouped. |
| invalid | boolean | Return an IBAN with deliberately wrong check digits, for testing validators. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/hu/ibanResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The IBAN in the requested format. |
| electronicFormat | string | The space-free electronic form of the IBAN. |
| bankCode | string | The bank identifier embedded in the IBAN. |
| bankName | string | Human-readable name of the issuing bank. |
API reference
GET /v1/hu/person
Try on playgroundReturns a synthetic Hungarian person: given name(s), surname, initials, birth date, and the matching személyi azonosító. Constrain with `sex` and age/birth-date filters (contradictory combinations are rejected with a 400). Set `invalid=true` for a deliberately wrong check value, `edge=true` for rare-corner values, and `caseStrict=false` to mangle the name casing.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| atAge | integer | Exact age in years at request time. |
| bornAfter | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornBefore | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornOn | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD. |
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname; initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias the number and name shape toward their rarely-exercised corners. |
| extreme | boolean | Return a correct person whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials, birthDate, and the national identifier stay clean. |
| invalid | boolean | Return a person whose személyi azonosító has a deliberately wrong check value. |
| olderThan | integer | Minimum age in years at request time. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Encoded sex: "m" or "f". |
| youngerThan | integer | Maximum age in years at request time. |
Request
curl https://api.real-fake-data.com/v1/hu/personResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s). |
| surname | string | Surname. |
| initials | string | Uppercase initials of name and surname, no dots. |
| birthDate | string | The birth date, ISO `YYYY-MM-DD`. |
| szemelyiAzonosito | string | The matching személyi azonosító. |
API reference
GET /v1/hu/person-name
Try on playgroundReturns a realistic synthetic Hungarian person name: given name(s), surname, and initials, in the local script. Use `sex` to pin the gendered form (`m`/`f`) or omit it for a random one. `edge=true` biases the name shape — second given names, double-barrelled surnames, and very short names become far more likely. Set `caseStrict=false` to deliberately mangle the name/surname casing (initials stay proper uppercase).
Query parameters
| Parameter | Type | Description |
|---|---|---|
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname (all-lower, all-upper, or random); initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias toward edge-case name shapes (second given names, double surnames, short names). |
| extreme | boolean | Return a correct name whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Gendered form of the name: "m" or "f". Omit for random. |
Request
curl https://api.real-fake-data.com/v1/hu/person-nameResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s), in the local script, agreeing with the reported sex. |
| surname | string | Surname in the form matching the sex (inflected where the language requires it). |
| initials | string | Uppercase initials of name and surname, no dots, e.g. `JK`. |
| sex | "m" | "f" | The sex the name was inflected for. |
API reference
GET /v1/hu/offering
Try on playgroundReturns a realistic synthetic Hungarian offering — a product or service with a localized name, a plausible EUR price, its unit, and its industry label. Pin `industry` (NACE code), `type` (product/service), or filter by `industryName`/`offeringName` full text. Set `edge=true` for the price/format corners, `extreme=true` for a hostile-encoded name, or `invalid=true` for a broken record.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict to edge-case offerings (price-band extremes, unusual units, long names). |
| extreme | boolean | Return a correct offering whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, homoglyphs, or bidi marks). Price, unit and industry label stay clean. |
| industry | "73" | "28.3" | "93.2" | "71" | "90" | "29.3" | "10.7" | "64" | "56.30" | "11" | "30.1" | "47.6" | "26.7" | "95.3" | "56.21" | "23.4" | "81.2" | "14" | "95.1" | "26.2" | "41" | "70" | "26.4" | "49.4" | "10.5" | "74.1" | "85" | "43.2" | "82.3" | "59" | "56.12" | "31" | "92" | "81.3" | "23.1" | "47.1" | "96.2" | "27.5" | "86.1" | "55" | "65" | "32.1" | "96.1" | "15" | "69" | "86.2" | "91.2" | "32.2" | "21" | "74.2" | "58" | "68" | "78" | "43.3" | "77" | "56.11" | "80" | "62" | "10.8" | "93.1" | "32.3" | "61" | "13" | "32.4" | "74.3" | "79" | "75" | "63" | "16" | Pin the industry by NACE code. Omit to draw across all covered industries. |
| industryName | string | Full-text filter: keep offerings whose localized industry label contains this. |
| invalid | boolean | Return a deliberately invalid offering (a price outside its band, a negative price, or an empty name) for negative-path testing. Cannot combine with edge/extreme. |
| language | "hu" | Pin the name language. Omit for the country’s weighted mix. |
| offeringName | string | Full-text filter: keep offerings whose localized name contains this. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "product" | "service" | Restrict to products or services. Omit for both. |
Request
curl https://api.real-fake-data.com/v1/hu/offeringResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The offering name in the resolved language. |
| offeringName | string | The full offering name (alias of `value`). |
| kind | "product" | "service" | Whether it is a good or a rendered service. |
| unit | string | The unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …). |
| price | integer | A single plausible price, in EUR minor units (cents). |
| currency | "EUR" | Currency of `price`; always EUR. |
| industryCode | string | NACE Rev. 2.1 code of the offering’s industry. |
| industryName | string | The localized industry label in the resolved language. |
| language | string | BCP-47 subtag used for this record’s names. |
API reference
GET /v1/hu/szemelyi-azonosito
Try on playgroundReturns a valid Hungarian személyi azonosító (the "személyi szám") with a correct mod-11 check digit. Constrain with `sex` and age/birth-date filters; the number encodes both. Contradictory combinations are rejected with a 400. Use `standard` to pick the weight scheme. Set `invalid=true` for a deliberately wrong check digit.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| atAge | integer | Exact age in years at request time. |
| bornAfter | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornBefore | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornOn | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case values. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| invalid | boolean | Return a number with a deliberately wrong check digit; sex/birth date stay valid. |
| olderThan | integer | Minimum age in years at request time. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Encoded sex: "m" or "f". |
| standard | "pre-1997" | "modern" | "both" | Which mod-11 weight scheme the check digit honours; `both` mixes them per record. |
| youngerThan | integer | Maximum age in years at request time. |
Request
curl https://api.real-fake-data.com/v1/hu/szemelyi-azonositoResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The identifier as a bare 11-digit string. |
| digits | string | The canonical 11-digit number. |
| birthDate | string | The encoded birth date, ISO `YYYY-MM-DD`. |
| sex | "m" | "f" | Encoded sex: `m` (odd code) or `f` (even code). |
| standard | "pre-1997" | "modern" | Which checksum standard the number satisfies. |
API reference
GET /v1/hu/taj
Try on playgroundReturns a valid Hungarian TAJ (társadalombiztosítási azonosító jel) with a correct mod-10 check digit. The TAJ is non-semantic — it encodes no birth date or sex. Set `invalid=true` for a deliberately wrong check digit.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case TAJs from the rare corners. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| invalid | boolean | Return a TAJ with a deliberately wrong check digit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/hu/tajResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The TAJ as a bare 9-digit string. |
| digits | string | The canonical 9-digit number. |
API reference
GET /v1/hu/vehicle-registration
Try on playgroundReturns a realistic Hungarian vehicle registration plate. `type` selects the kind: `standard` (default, the 2022+ civilian `LLLL-NNN`, e.g. KLMN-482), `custom` (vanity `LLL-NNN` / `LLLL-NN`), `military` (`H<L>-NNNN`), `diplomatic` (`CD-NNN-NNN`), `police` (`R<L>-NNNN`), `oldtimer` (`OT-NNNN`), `taxi` (`E[A-D]<L>-NNN`), `electric` (reuses the current civilian mask), `motorcycle` (`U<LL> NNN`), or `temporary` (`P`/`Z-NNNNN`). `era` switches the civilian mask between the current four-letter form, the still-common legacy three-letter `LLL-NNN`, or a per-call mix (`both`); it applies to `standard`/`electric` only. Hungarian plates carry no region code and no checksum, so there is no region field and no `invalid` variant. Use `format` to choose hyphen, compact, or spaced rendering.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case plates from the rare corners of the format. |
| era | "current" | "legacy" | "both" | Civilian era: current (four-letter LLLL-NNN), legacy (three-letter LLL-NNN), or both (per-call mix). Applies to standard/electric only. Default current. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "hyphen" | "compact" | "with-space" | Plate rendering: hyphen (default), compact, or with a space. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "standard" | "custom" | "military" | "diplomatic" | "police" | "oldtimer" | "taxi" | "electric" | "motorcycle" | "temporary" | Plate kind: standard, custom, military, diplomatic, police, oldtimer, taxi, electric, motorcycle, or temporary. |
Request
curl https://api.real-fake-data.com/v1/hu/vehicle-registrationResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The plate in the requested format, e.g. "KLMN-482". |
| type | "standard" | "custom" | "military" | "diplomatic" | "police" | "oldtimer" | "taxi" | "electric" | "motorcycle" | "temporary" | Which kind of plate this is. |
API reference
GET /v1/ie/company
Try on playgroundReturns a consistent synthetic Irish company in one call: a full trading name with its legal form, plus the matching cro, vat. Shape the name with `strategy` and `legalForm` (as on `/v1/ie/company-name`). Set `invalid=true` to corrupt the checksummed identifiers (the name stays intact), for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case values from the rare corners. |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Corrupt the checksummed identifiers, for testing validators. |
| legalForm | "any" | "none" | "Ltd" | "PLC" | "DAC" | "CLG" | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family for the company name. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/ie/companyResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form, or `null` when none was added. |
| cro | string | The matching cro identifier. |
| vat | string | The matching vat identifier. |
API reference
GET /v1/ie/company-name
Try on playgroundReturns a realistic synthetic Irish company name across the naming families (coined, owner-surname, descriptive, modern), with an optional trailing legal form in its authentic local form. Pin `strategy` or `legalForm`, set `legalForm=none` to omit it, or `edge=true` for the punctuation-heavy / long-form corners.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case names (punctuation-heavy families, long/rare forms). |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| legalForm | "any" | "none" | "Ltd" | "PLC" | "DAC" | "CLG" | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/ie/company-nameResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form (e.g. `GmbH`, `S.r.l.`), or `null` when none was added. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Which naming family produced the name. |
API reference
GET /v1/ie/cro
Try on playgroundReturns an Irish CRO (Companies Registration Office) number: a plain six-digit number with no checksum. Set `edge=true` for boundary values of the six-digit range.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case CRO numbers from the rare corners. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/ie/croResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The CRO number, e.g. `123456`. |
| digits | string | The canonical six-digit number, leading zeros preserved. |
API reference
GET /v1/ie/email
Try on playgroundReturns a realistic synthetic Irish email address: a name-based local part (romanised to ASCII) on a free webmail, a Irish regional provider, or a corporate domain built from a Irish company brand. `domain` pins an exact domain; `domainCategory` (`free`/`regional`/`corporate`/`any`) scopes a weighted-random draw. `pattern` selects the local-part shape or `any`. `plusTag` controls plus-addressing; `exotic=true` allows the rarer RFC-valid characters.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| domain | stringpattern ^[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ | Pin an exact domain, e.g. "gmail.com". Overrides domainCategory. |
| domainCategory | "free" | "regional" | "corporate" | "any" | Scope the random domain draw: free webmail, regional providers, corporate domains, or any. |
| edge | boolean | Restrict output to edge-case addresses from the rare corners of the format. |
| exotic | boolean | Allow rarer RFC-valid local-part characters (%, =, ~). Off by default. |
| extreme | boolean | Return a correct address whose value is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). localPart, domain, and the decomposition stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | "any" | Local-part shape, e.g. "first.last"; "any" picks a weighted-random one. |
| plusTag | stringpattern ^[A-Za-z0-9_-]+$ | Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/ie/emailResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full email address, e.g. "anna.schmidt+news@mueller-bau.de". |
| localPart | string | The part before the `@`, including any plus tag. |
| domain | string | The domain, e.g. "gmail.com", "wp.pl", or "mueller-bau.de". |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | Which local-part pattern produced the address. |
| domainCategory | "free" | "regional" | "corporate" | Whether the domain is free, regional, or corporate. |
| company | string | The company name a corporate domain or company local-part was derived from, or `null`. |
| plusTag | string | The plus-addressing tag, or `null` when none. |
API reference
GET /v1/ie/iban
Try on playgroundReturns a valid Irish IBAN with a correct checksum. Pin the issuing bank with `bankCode` (4-letter bank code) or `bankName` (mutually exclusive), or let it be chosen at random. Set `invalid=true` to get an IBAN with deliberately wrong check digits, for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| bankCode | string | Pin the issuing bank by its 4-letter bank code. Mutually exclusive with bankName. |
| bankName | string | Pin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case IBANs from the rare corners of the format. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "grouped" | "compact" | IBAN rendering: grouped or compact. Default grouped. |
| invalid | boolean | Return an IBAN with deliberately wrong check digits, for testing validators. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/ie/ibanResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The IBAN in the requested format. |
| electronicFormat | string | The space-free electronic form of the IBAN. |
| bankCode | string | The bank identifier embedded in the IBAN. |
| bankName | string | Human-readable name of the issuing bank. |
API reference
GET /v1/ie/person
Try on playgroundReturns a synthetic Irish person: given name(s), surname, initials, birth date, and the matching PPSN. Constrain with `sex` and age/birth-date filters (contradictory combinations are rejected with a 400). Set `invalid=true` for a deliberately wrong check value, `edge=true` for rare-corner values, and `caseStrict=false` to mangle the name casing.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| atAge | integer | Exact age in years at request time. |
| bornAfter | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornBefore | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornOn | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD. |
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname; initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias the number and name shape toward their rarely-exercised corners. |
| extreme | boolean | Return a correct person whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials, birthDate, and the national identifier stay clean. |
| invalid | boolean | Return a person whose PPSN has a deliberately wrong check value. |
| olderThan | integer | Minimum age in years at request time. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Encoded sex: "m" or "f". |
| youngerThan | integer | Maximum age in years at request time. |
Request
curl https://api.real-fake-data.com/v1/ie/personResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s). |
| surname | string | Surname. |
| initials | string | Uppercase initials of name and surname, no dots. |
| birthDate | string | The birth date, ISO `YYYY-MM-DD`. |
| ppsn | string | The matching PPSN. |
API reference
GET /v1/ie/person-name
Try on playgroundReturns a realistic synthetic Irish person name: given name(s), surname, and initials, in the local script. Use `sex` to pin the gendered form (`m`/`f`) or omit it for a random one. `edge=true` biases the name shape — second given names, double-barrelled surnames, and very short names become far more likely. Set `caseStrict=false` to deliberately mangle the name/surname casing (initials stay proper uppercase).
Query parameters
| Parameter | Type | Description |
|---|---|---|
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname (all-lower, all-upper, or random); initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias toward edge-case name shapes (second given names, double surnames, short names). |
| extreme | boolean | Return a correct name whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Gendered form of the name: "m" or "f". Omit for random. |
Request
curl https://api.real-fake-data.com/v1/ie/person-nameResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s), in the local script, agreeing with the reported sex. |
| surname | string | Surname in the form matching the sex (inflected where the language requires it). |
| initials | string | Uppercase initials of name and surname, no dots, e.g. `JK`. |
| sex | "m" | "f" | The sex the name was inflected for. |
API reference
GET /v1/ie/ppsn
Try on playgroundReturns a valid Irish PPSN (Personal Public Service Number) with a correct mod-23 check letter. Use `standard` for the `modern` (post-2013) or `pre-2013` form. Set `invalid=true` for a PPSN with a deliberately wrong check letter.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case PPSNs from the rare corners. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| invalid | boolean | Return a PPSN with a deliberately wrong check letter. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| standard | "pre-2013" | "modern" | "both" | PPSN form: `modern` (post-2013, default), `pre-2013`, or `both` (random per record). |
Request
curl https://api.real-fake-data.com/v1/ie/ppsnResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full PPSN, e.g. `1234567FA`. |
| digits | string | The canonical seven-digit body. |
| checkLetter | string | The single check letter. |
| secondLetteroptional | string | The trailing second letter, present only in the modern form. |
API reference
GET /v1/ie/offering
Try on playgroundReturns a realistic synthetic Irish offering — a product or service with a localized name, a plausible EUR price, its unit, and its industry label. Irish is multilingual: without a pinned `language`, names draw from the weighted en/ga mix. Pin `industry` (NACE code), `type` (product/service), or filter by `industryName`/`offeringName` full text. Set `edge=true` for the price/format corners, `extreme=true` for a hostile-encoded name, or `invalid=true` for a broken record.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict to edge-case offerings (price-band extremes, unusual units, long names). |
| extreme | boolean | Return a correct offering whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, homoglyphs, or bidi marks). Price, unit and industry label stay clean. |
| industry | "73" | "28.3" | "93.2" | "71" | "90" | "29.3" | "10.7" | "64" | "56.30" | "11" | "30.1" | "47.6" | "26.7" | "95.3" | "56.21" | "23.4" | "81.2" | "14" | "95.1" | "26.2" | "41" | "70" | "26.4" | "49.4" | "10.5" | "74.1" | "85" | "43.2" | "82.3" | "59" | "56.12" | "31" | "92" | "81.3" | "23.1" | "47.1" | "96.2" | "27.5" | "86.1" | "55" | "65" | "32.1" | "96.1" | "15" | "69" | "86.2" | "91.2" | "32.2" | "21" | "74.2" | "58" | "68" | "78" | "43.3" | "77" | "56.11" | "80" | "62" | "10.8" | "93.1" | "32.3" | "61" | "13" | "32.4" | "74.3" | "79" | "75" | "63" | "16" | Pin the industry by NACE code. Omit to draw across all covered industries. |
| industryName | string | Full-text filter: keep offerings whose localized industry label contains this. |
| invalid | boolean | Return a deliberately invalid offering (a price outside its band, a negative price, or an empty name) for negative-path testing. Cannot combine with edge/extreme. |
| language | "en" | "ga" | Pin the name language. Omit for the country’s weighted mix. |
| offeringName | string | Full-text filter: keep offerings whose localized name contains this. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "product" | "service" | Restrict to products or services. Omit for both. |
Request
curl https://api.real-fake-data.com/v1/ie/offeringResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The offering name in the resolved language. |
| offeringName | string | The full offering name (alias of `value`). |
| kind | "product" | "service" | Whether it is a good or a rendered service. |
| unit | string | The unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …). |
| price | integer | A single plausible price, in EUR minor units (cents). |
| currency | "EUR" | Currency of `price`; always EUR. |
| industryCode | string | NACE Rev. 2.1 code of the offering’s industry. |
| industryName | string | The localized industry label in the resolved language. |
| language | string | BCP-47 subtag used for this record’s names. |
API reference
GET /v1/ie/vat
Try on playgroundReturns a valid Irish VAT number with a correct mod-23 check letter. Use `format` for the bare `national` body or the `IE`-prefixed `vat` form, and `standard` for the `modern` (post-2013) or `pre-2013` form. Set `invalid=true` for a VAT number with a deliberately wrong check letter.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case VAT numbers from the rare corners. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "national" | "vat" | Rendering: bare `national` body (default) or `vat` (`IE` prefix). |
| invalid | boolean | Return a VAT number with a deliberately wrong check letter. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| standard | "pre-2013" | "modern" | "both" | VAT form: `modern` (post-2013, default), `pre-2013`, or `both` (random per record). |
Request
curl https://api.real-fake-data.com/v1/ie/vatResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The VAT number in the requested format. |
| digits | string | The canonical seven-digit body. |
API reference
GET /v1/ie/vehicle-registration
Try on playgroundReturns a realistic Irish vehicle registration plate. `type` selects the kind: `standard` (default, `YYY-CC-N…`, e.g. 231-D-12345), `taxi` and `electric` (identical `YYY-CC-N…` format), `temporary-import` (`ZZ NNNNN`, year-less), or `vintage` (`ZV NNNN`, year-less). `era` switches the year-and-county classes between `current` (2013+ three-digit-year), `legacy` (1987–2012 two-digit-year, may draw a retired index mark), or `both`. Pin the county index mark with `county` (an unknown county is a 400). Ireland issues no vanity plates and no plate carries a checksum. Use `format` to choose hyphenated, spaced, or compact rendering.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| county | string | Force the county index mark by name (e.g. Dublin, Kerry). An unknown county is a 400. |
| edge | boolean | Restrict output to edge-case plates from the rare corners of the format. |
| era | "current" | "legacy" | "both" | Registration era for year-and-county plates: current (2013+ YYY-CC-N…), legacy (1987–2012 YY-CC-N…), or both. Ignored for temporary-import / vintage. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "with-hyphen" | "with-space" | "compact" | Plate rendering: with-hyphen (default), with-space, or compact. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "standard" | "temporary-import" | "vintage" | "taxi" | "electric" | Plate kind: standard, temporary-import, vintage, taxi, or electric. |
Request
curl https://api.real-fake-data.com/v1/ie/vehicle-registrationResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The plate in the requested format, e.g. "231-D-12345". |
| type | "standard" | "temporary-import" | "vintage" | "taxi" | "electric" | Which kind of plate this is. |
| eraoptional | "current" | "legacy" | Which era the plate belongs to: current (2013+ three-digit-year) or legacy (1987–2012 two-digit-year). Absent for the year-less classes. |
| countyoptional | string | The county whose index mark heads the plate (Dublin, Cork, Kerry). Absent for temporary-import / vintage, which encode no county. |
| subregionoptional | string | The finer administrative unit for a retired index mark on a legacy plate (e.g. Limerick city → LK). Absent otherwise. |
API reference
GET /v1/it/codice-fiscale
Try on playgroundReturns a valid Italian Codice Fiscale with a correct check character. Constrain with `sex`, age/birth-date filters (year, month, and day are encoded), and the optional `surname`/`name` to encode. Contradictory combinations are rejected with a 400. Set `invalid=true` for a deliberately wrong check character.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| atAge | integer | Exact age in years at request time. |
| bornAfter | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornBefore | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornOn | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case values. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| invalid | boolean | Return a code with a deliberately wrong check character; encoded facts stay valid. |
| name | string | The given name to encode. When omitted, a plausible random name is generated. |
| olderThan | integer | Minimum age in years at request time. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Encoded sex: "m" or "f". |
| surname | string | The surname to encode. When omitted, a plausible random surname is generated. |
| youngerThan | integer | Maximum age in years at request time. |
Request
curl https://api.real-fake-data.com/v1/it/codice-fiscaleResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full 16-character Codice Fiscale. |
| surnameCode | string | The 3-letter surname code. |
| nameCode | string | The 3-letter name code. |
| birthDate | string | The encoded birth date in ISO `YYYY-MM-DD` form. |
| sex | "m" | "f" | Encoded sex: `m` or `f` (women carry a day offset of +40). |
API reference
GET /v1/it/company
Try on playgroundReturns a consistent synthetic Italian company in one call: a full trading name with its legal form, plus the matching partitaIva. Shape the name with `strategy` and `legalForm` (as on `/v1/it/company-name`). Set `invalid=true` to corrupt the checksummed identifiers (the name stays intact), for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case values from the rare corners. |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Corrupt the checksummed identifiers, for testing validators. |
| legalForm | "any" | "none" | "S.r.l." | "S.p.A." | "S.n.c." | "S.a.s." | "S.r.l.s." | "S.c." | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family for the company name. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/it/companyResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form, or `null` when none was added. |
| partitaIva | string | The matching partita-iva identifier. |
API reference
GET /v1/it/company-name
Try on playgroundReturns a realistic synthetic Italian company name across the naming families (coined, owner-surname, descriptive, modern), with an optional trailing legal form in its authentic local form. Pin `strategy` or `legalForm`, set `legalForm=none` to omit it, or `edge=true` for the punctuation-heavy / long-form corners.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case names (punctuation-heavy families, long/rare forms). |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| legalForm | "any" | "none" | "S.r.l." | "S.p.A." | "S.n.c." | "S.a.s." | "S.r.l.s." | "S.c." | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/it/company-nameResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form (e.g. `GmbH`, `S.r.l.`), or `null` when none was added. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Which naming family produced the name. |
API reference
GET /v1/it/email
Try on playgroundReturns a realistic synthetic Italian email address: a name-based local part (romanised to ASCII) on a free webmail, a Italian regional provider, or a corporate domain built from a Italian company brand. `domain` pins an exact domain; `domainCategory` (`free`/`regional`/`corporate`/`any`) scopes a weighted-random draw. `pattern` selects the local-part shape or `any`. `plusTag` controls plus-addressing; `exotic=true` allows the rarer RFC-valid characters.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| domain | stringpattern ^[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ | Pin an exact domain, e.g. "gmail.com". Overrides domainCategory. |
| domainCategory | "free" | "regional" | "corporate" | "any" | Scope the random domain draw: free webmail, regional providers, corporate domains, or any. |
| edge | boolean | Restrict output to edge-case addresses from the rare corners of the format. |
| exotic | boolean | Allow rarer RFC-valid local-part characters (%, =, ~). Off by default. |
| extreme | boolean | Return a correct address whose value is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). localPart, domain, and the decomposition stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | "any" | Local-part shape, e.g. "first.last"; "any" picks a weighted-random one. |
| plusTag | stringpattern ^[A-Za-z0-9_-]+$ | Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/it/emailResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full email address, e.g. "anna.schmidt+news@mueller-bau.de". |
| localPart | string | The part before the `@`, including any plus tag. |
| domain | string | The domain, e.g. "gmail.com", "wp.pl", or "mueller-bau.de". |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | Which local-part pattern produced the address. |
| domainCategory | "free" | "regional" | "corporate" | Whether the domain is free, regional, or corporate. |
| company | string | The company name a corporate domain or company local-part was derived from, or `null`. |
| plusTag | string | The plus-addressing tag, or `null` when none. |
API reference
GET /v1/it/iban
Try on playgroundReturns a valid Italian IBAN with a correct checksum. Pin the issuing bank with `bankCode` (5-digit ABI code) or `bankName` (mutually exclusive), or let it be chosen at random. Set `invalid=true` to get an IBAN with deliberately wrong check digits, for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| bankCode | string | Pin the issuing bank by its 5-digit ABI code. Mutually exclusive with bankName. |
| bankName | string | Pin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case IBANs from the rare corners of the format. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "grouped" | "compact" | IBAN rendering: grouped or compact. Default grouped. |
| invalid | boolean | Return an IBAN with deliberately wrong check digits, for testing validators. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/it/ibanResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The IBAN in the requested format. |
| electronicFormat | string | The space-free electronic form of the IBAN. |
| bankCode | string | The bank identifier embedded in the IBAN. |
| bankName | string | Human-readable name of the issuing bank. |
API reference
GET /v1/it/partita-iva
Try on playgroundReturns a valid Italian Partita IVA (business/VAT identifier) with a correct Luhn checksum. Use `format=vat` for the IT-prefixed EU VAT number. Set `invalid=true` for a Partita IVA with a deliberately wrong check digit.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case numbers from the rare corners. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "national" | "vat" | Rendering: bare 11-digit Partita IVA (default) or IT-prefixed VAT number. |
| invalid | boolean | Return a Partita IVA with a deliberately wrong Luhn check digit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/it/partita-ivaResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The Partita IVA in the requested format (national or VAT). |
| digits | string | The canonical, unprefixed 11-digit Partita IVA. |
API reference
GET /v1/it/person
Try on playgroundReturns a synthetic Italian person: given name(s), surname, initials, birth date, and the matching Codice Fiscale. Constrain with `sex` and age/birth-date filters (contradictory combinations are rejected with a 400). Set `invalid=true` for a deliberately wrong check value, `edge=true` for rare-corner values, and `caseStrict=false` to mangle the name casing.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| atAge | integer | Exact age in years at request time. |
| bornAfter | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornBefore | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornOn | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD. |
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname; initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias the number and name shape toward their rarely-exercised corners. |
| extreme | boolean | Return a correct person whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials, birthDate, and the national identifier stay clean. |
| invalid | boolean | Return a person whose Codice Fiscale has a deliberately wrong check value. |
| olderThan | integer | Minimum age in years at request time. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Encoded sex: "m" or "f". |
| youngerThan | integer | Maximum age in years at request time. |
Request
curl https://api.real-fake-data.com/v1/it/personResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s). |
| surname | string | Surname. |
| initials | string | Uppercase initials of name and surname, no dots. |
| birthDate | string | The birth date, ISO `YYYY-MM-DD`. |
| codiceFiscale | string | The matching Codice Fiscale. |
API reference
GET /v1/it/person-name
Try on playgroundReturns a realistic synthetic Italian person name: given name(s), surname, and initials, in the local script. Use `sex` to pin the gendered form (`m`/`f`) or omit it for a random one. `edge=true` biases the name shape — second given names, double-barrelled surnames, and very short names become far more likely. Set `caseStrict=false` to deliberately mangle the name/surname casing (initials stay proper uppercase).
Query parameters
| Parameter | Type | Description |
|---|---|---|
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname (all-lower, all-upper, or random); initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias toward edge-case name shapes (second given names, double surnames, short names). |
| extreme | boolean | Return a correct name whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Gendered form of the name: "m" or "f". Omit for random. |
Request
curl https://api.real-fake-data.com/v1/it/person-nameResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s), in the local script, agreeing with the reported sex. |
| surname | string | Surname in the form matching the sex (inflected where the language requires it). |
| initials | string | Uppercase initials of name and surname, no dots, e.g. `JK`. |
| sex | "m" | "f" | The sex the name was inflected for. |
API reference
GET /v1/it/offering
Try on playgroundReturns a realistic synthetic Italian offering — a product or service with a localized name, a plausible EUR price, its unit, and its industry label. Pin `industry` (NACE code), `type` (product/service), or filter by `industryName`/`offeringName` full text. Set `edge=true` for the price/format corners, `extreme=true` for a hostile-encoded name, or `invalid=true` for a broken record.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict to edge-case offerings (price-band extremes, unusual units, long names). |
| extreme | boolean | Return a correct offering whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, homoglyphs, or bidi marks). Price, unit and industry label stay clean. |
| industry | "73" | "28.3" | "93.2" | "71" | "90" | "29.3" | "10.7" | "64" | "56.30" | "11" | "30.1" | "47.6" | "26.7" | "95.3" | "56.21" | "23.4" | "81.2" | "14" | "95.1" | "26.2" | "41" | "70" | "26.4" | "49.4" | "10.5" | "74.1" | "85" | "43.2" | "82.3" | "59" | "56.12" | "31" | "92" | "81.3" | "23.1" | "47.1" | "96.2" | "27.5" | "86.1" | "55" | "65" | "32.1" | "96.1" | "15" | "69" | "86.2" | "91.2" | "32.2" | "21" | "74.2" | "58" | "68" | "78" | "43.3" | "77" | "56.11" | "80" | "62" | "10.8" | "93.1" | "32.3" | "61" | "13" | "32.4" | "74.3" | "79" | "75" | "63" | "16" | Pin the industry by NACE code. Omit to draw across all covered industries. |
| industryName | string | Full-text filter: keep offerings whose localized industry label contains this. |
| invalid | boolean | Return a deliberately invalid offering (a price outside its band, a negative price, or an empty name) for negative-path testing. Cannot combine with edge/extreme. |
| language | "it" | Pin the name language. Omit for the country’s weighted mix. |
| offeringName | string | Full-text filter: keep offerings whose localized name contains this. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "product" | "service" | Restrict to products or services. Omit for both. |
Request
curl https://api.real-fake-data.com/v1/it/offeringResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The offering name in the resolved language. |
| offeringName | string | The full offering name (alias of `value`). |
| kind | "product" | "service" | Whether it is a good or a rendered service. |
| unit | string | The unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …). |
| price | integer | A single plausible price, in EUR minor units (cents). |
| currency | "EUR" | Currency of `price`; always EUR. |
| industryCode | string | NACE Rev. 2.1 code of the offering’s industry. |
| industryName | string | The localized industry label in the resolved language. |
| language | string | BCP-47 subtag used for this record’s names. |
API reference
GET /v1/it/vehicle-registration
Try on playgroundReturns a realistic Italian vehicle registration plate. `type` selects the kind: `standard` (default, `LL NNN LL`, e.g. AK 514 RH), `motorcycle` (`LL NNNNN`), `military` (EI/MM/AM/CC + `LL NNN`), `diplomatic` (CD/CC + `NNNN LL`), or `trailer` (X-series). A standard plate can carry the optional cosmetic province sticker via `withProvince` (random) or `province` (forced; an unknown code is a 400). Italy issues no vanity plates and no plate carries a checksum. Use `format` to choose spaced or compact rendering.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case plates from the rare corners of the format. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "with-space" | "compact" | Plate rendering: with a space or compact. Default with-space. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| province | string | Force the province sticker to a code (e.g. MI, RM). Standard plates only. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "standard" | "motorcycle" | "military" | "diplomatic" | "trailer" | Plate kind: standard, motorcycle, military, diplomatic, or trailer. |
| withProvince | boolean | Attach a random real province sticker to a standard plate. |
Request
curl https://api.real-fake-data.com/v1/it/vehicle-registrationResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The plate in the requested format, e.g. "AK 514 RH". |
| type | "standard" | "motorcycle" | "military" | "diplomatic" | "trailer" | Which kind of plate this is. |
| provinceoptional | string | Optional province sticker (e.g. MI, ROMA); present only when requested. |
API reference
GET /v1/lv/company
Try on playgroundReturns a consistent synthetic Latvian company in one call: a full trading name with its legal form, plus the matching registracijasNumurs. Shape the name with `strategy` and `legalForm` (as on `/v1/lv/company-name`). Set `invalid=true` to corrupt the checksummed identifiers (the name stays intact), for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case values from the rare corners. |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Corrupt the checksummed identifiers, for testing validators. |
| legalForm | "any" | "none" | "SIA" | "AS" | "IK" | "ZS" | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family for the company name. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/lv/companyResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form, or `null` when none was added. |
| registracijasNumurs | string | The matching registracijas-numurs identifier. |
API reference
GET /v1/lv/company-name
Try on playgroundReturns a realistic synthetic Latvian company name across the naming families (coined, owner-surname, descriptive, modern), with an optional trailing legal form in its authentic local form. Pin `strategy` or `legalForm`, set `legalForm=none` to omit it, or `edge=true` for the punctuation-heavy / long-form corners.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case names (punctuation-heavy families, long/rare forms). |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| legalForm | "any" | "none" | "SIA" | "AS" | "IK" | "ZS" | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/lv/company-nameResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form (e.g. `GmbH`, `S.r.l.`), or `null` when none was added. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Which naming family produced the name. |
API reference
GET /v1/lv/email
Try on playgroundReturns a realistic synthetic Latvian email address: a name-based local part (romanised to ASCII) on a free webmail, a Latvian regional provider, or a corporate domain built from a Latvian company brand. `domain` pins an exact domain; `domainCategory` (`free`/`regional`/`corporate`/`any`) scopes a weighted-random draw. `pattern` selects the local-part shape or `any`. `plusTag` controls plus-addressing; `exotic=true` allows the rarer RFC-valid characters.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| domain | stringpattern ^[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ | Pin an exact domain, e.g. "gmail.com". Overrides domainCategory. |
| domainCategory | "free" | "regional" | "corporate" | "any" | Scope the random domain draw: free webmail, regional providers, corporate domains, or any. |
| edge | boolean | Restrict output to edge-case addresses from the rare corners of the format. |
| exotic | boolean | Allow rarer RFC-valid local-part characters (%, =, ~). Off by default. |
| extreme | boolean | Return a correct address whose value is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). localPart, domain, and the decomposition stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | "any" | Local-part shape, e.g. "first.last"; "any" picks a weighted-random one. |
| plusTag | stringpattern ^[A-Za-z0-9_-]+$ | Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/lv/emailResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full email address, e.g. "anna.schmidt+news@mueller-bau.de". |
| localPart | string | The part before the `@`, including any plus tag. |
| domain | string | The domain, e.g. "gmail.com", "wp.pl", or "mueller-bau.de". |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | Which local-part pattern produced the address. |
| domainCategory | "free" | "regional" | "corporate" | Whether the domain is free, regional, or corporate. |
| company | string | The company name a corporate domain or company local-part was derived from, or `null`. |
| plusTag | string | The plus-addressing tag, or `null` when none. |
API reference
GET /v1/lv/iban
Try on playgroundReturns a valid Latvian IBAN with a correct checksum. Pin the issuing bank with `bankCode` (4-letter bank code) or `bankName` (mutually exclusive), or let it be chosen at random. Set `invalid=true` to get an IBAN with deliberately wrong check digits, for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| bankCode | string | Pin the issuing bank by its 4-letter bank code. Mutually exclusive with bankName. |
| bankName | string | Pin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case IBANs from the rare corners of the format. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "grouped" | "compact" | IBAN rendering: grouped or compact. Default grouped. |
| invalid | boolean | Return an IBAN with deliberately wrong check digits, for testing validators. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/lv/ibanResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The IBAN in the requested format. |
| electronicFormat | string | The space-free electronic form of the IBAN. |
| bankCode | string | The bank identifier embedded in the IBAN. |
| bankName | string | Human-readable name of the issuing bank. |
API reference
GET /v1/lv/person
Try on playgroundReturns a synthetic Latvian person: given name(s), surname, initials, birth date, and the matching personas kods. Constrain with `sex` and age/birth-date filters (contradictory combinations are rejected with a 400). Set `invalid=true` for a deliberately wrong check value, `edge=true` for rare-corner values, and `caseStrict=false` to mangle the name casing.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| atAge | integer | Exact age in years at request time. |
| bornAfter | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornBefore | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornOn | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD. |
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname; initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias the number and name shape toward their rarely-exercised corners. |
| extreme | boolean | Return a correct person whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials, birthDate, and the national identifier stay clean. |
| invalid | boolean | Return a person whose personas kods has a deliberately wrong check value. |
| olderThan | integer | Minimum age in years at request time. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Encoded sex: "m" or "f". |
| youngerThan | integer | Maximum age in years at request time. |
Request
curl https://api.real-fake-data.com/v1/lv/personResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s). |
| surname | string | Surname. |
| initials | string | Uppercase initials of name and surname, no dots. |
| birthDate | string | The birth date, ISO `YYYY-MM-DD`. |
| personasKods | string | The matching personas kods. |
API reference
GET /v1/lv/person-name
Try on playgroundReturns a realistic synthetic Latvian person name: given name(s), surname, and initials, in the local script. Use `sex` to pin the gendered form (`m`/`f`) or omit it for a random one. `edge=true` biases the name shape — second given names, double-barrelled surnames, and very short names become far more likely. Set `caseStrict=false` to deliberately mangle the name/surname casing (initials stay proper uppercase).
Query parameters
| Parameter | Type | Description |
|---|---|---|
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname (all-lower, all-upper, or random); initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias toward edge-case name shapes (second given names, double surnames, short names). |
| extreme | boolean | Return a correct name whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Gendered form of the name: "m" or "f". Omit for random. |
Request
curl https://api.real-fake-data.com/v1/lv/person-nameResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s), in the local script, agreeing with the reported sex. |
| surname | string | Surname in the form matching the sex (inflected where the language requires it). |
| initials | string | Uppercase initials of name and surname, no dots, e.g. `JK`. |
| sex | "m" | "f" | The sex the name was inflected for. |
API reference
GET /v1/lv/personas-kods
Try on playgroundReturns a valid Latvian personas kods with a correct check digit. Latvia does not encode sex. Use `standard` for the `legacy` (date-encoded) or `modern` (non-semantic, default) code; the age/birth-date filters apply to `legacy` only. Contradictory combinations are rejected with a 400. Set `invalid=true` for a deliberately wrong check digit.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| atAge | integer | Exact age in years at request time. |
| bornAfter | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornBefore | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornOn | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case values. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "plain" | "with-hyphen" | Rendering: bare 11 digits (default) or `DDMMYY-XNNNZ` with a hyphen. |
| invalid | boolean | Return a personas kods with a deliberately wrong check digit. |
| olderThan | integer | Minimum age in years at request time. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| standard | "legacy" | "modern" | "both" | Standard: `legacy` (date-encoded), `modern` (non-semantic, default), or `both` (random per record). |
| youngerThan | integer | Maximum age in years at request time. |
Request
curl https://api.real-fake-data.com/v1/lv/personas-kodsResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The personas kods in the requested format. |
| digits | string | The canonical 11-digit personas kods. |
| birthDateoptional | string | The encoded birth date, ISO `YYYY-MM-DD`; present only for `legacy` codes. |
API reference
GET /v1/lv/offering
Try on playgroundReturns a realistic synthetic Latvian offering — a product or service with a localized name, a plausible EUR price, its unit, and its industry label. Pin `industry` (NACE code), `type` (product/service), or filter by `industryName`/`offeringName` full text. Set `edge=true` for the price/format corners, `extreme=true` for a hostile-encoded name, or `invalid=true` for a broken record.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict to edge-case offerings (price-band extremes, unusual units, long names). |
| extreme | boolean | Return a correct offering whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, homoglyphs, or bidi marks). Price, unit and industry label stay clean. |
| industry | "73" | "28.3" | "93.2" | "71" | "90" | "29.3" | "10.7" | "64" | "56.30" | "11" | "30.1" | "47.6" | "26.7" | "95.3" | "56.21" | "23.4" | "81.2" | "14" | "95.1" | "26.2" | "41" | "70" | "26.4" | "49.4" | "10.5" | "74.1" | "85" | "43.2" | "82.3" | "59" | "56.12" | "31" | "92" | "81.3" | "23.1" | "47.1" | "96.2" | "27.5" | "86.1" | "55" | "65" | "32.1" | "96.1" | "15" | "69" | "86.2" | "91.2" | "32.2" | "21" | "74.2" | "58" | "68" | "78" | "43.3" | "77" | "56.11" | "80" | "62" | "10.8" | "93.1" | "32.3" | "61" | "13" | "32.4" | "74.3" | "79" | "75" | "63" | "16" | Pin the industry by NACE code. Omit to draw across all covered industries. |
| industryName | string | Full-text filter: keep offerings whose localized industry label contains this. |
| invalid | boolean | Return a deliberately invalid offering (a price outside its band, a negative price, or an empty name) for negative-path testing. Cannot combine with edge/extreme. |
| language | "lv" | Pin the name language. Omit for the country’s weighted mix. |
| offeringName | string | Full-text filter: keep offerings whose localized name contains this. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "product" | "service" | Restrict to products or services. Omit for both. |
Request
curl https://api.real-fake-data.com/v1/lv/offeringResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The offering name in the resolved language. |
| offeringName | string | The full offering name (alias of `value`). |
| kind | "product" | "service" | Whether it is a good or a rendered service. |
| unit | string | The unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …). |
| price | integer | A single plausible price, in EUR minor units (cents). |
| currency | "EUR" | Currency of `price`; always EUR. |
| industryCode | string | NACE Rev. 2.1 code of the offering’s industry. |
| industryName | string | The localized industry label in the resolved language. |
| language | string | BCP-47 subtag used for this record’s names. |
API reference
GET /v1/lv/registracijas-numurs
Try on playgroundReturns a valid Latvian registracijas numurs (legal-entity registration number) satisfying the official weighted-sum validity rule. Use `format` for the LV VAT number. Set `invalid=true` for a number with a deliberately broken validity rule.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case numbers from the rare corners. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "national" | "vat" | Rendering: bare 11-digit number (default) or LV VAT number. |
| invalid | boolean | Return a number with a deliberately broken validity rule. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/lv/registracijas-numursResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The identifier in the requested format (national or VAT). |
| digits | string | The canonical, unprefixed 11-digit number. |
API reference
GET /v1/lv/vehicle-registration
Try on playgroundReturns a realistic Latvian vehicle registration plate. `type` selects the kind: `standard` (default, `LL-NNNN`, e.g. LM-8912), `custom` (a vanity plate of 2–8 Latin letters/digits), `military` (`LA-NNNN`), `diplomatic` (`CD-NNNN`), `consular` (`C-NNNN`), `historic` (`VS-NNNN`), `taxi` (`TX-NNNN`), `transit` (`QA-NNNN`), `motorcycle` (`LL-NNN`), or `moped` (`L-NNN`). No plate encodes a region or carries a checksum, so there is no `invalid` variant. Use `format` to choose hyphenated or compact rendering.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case plates from the rare corners of the format. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "hyphen" | "compact" | Plate rendering: hyphen-separated or compact. Default hyphen. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "standard" | "custom" | "military" | "diplomatic" | "consular" | "historic" | "taxi" | "transit" | "motorcycle" | "moped" | Plate kind: standard, custom, military, diplomatic, consular, historic, taxi, transit, motorcycle, or moped. |
Request
curl https://api.real-fake-data.com/v1/lv/vehicle-registrationResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The plate in the requested format, e.g. "LM-8912". |
| type | "standard" | "custom" | "military" | "diplomatic" | "consular" | "historic" | "taxi" | "transit" | "motorcycle" | "moped" | Which kind of plate this is. |
API reference
GET /v1/lt/asmens-kodas
Try on playgroundReturns a valid Lithuanian asmens kodas with a correct two-pass mod-11 check digit. Constrain with `sex` and age/birth-date filters (the code encodes the full birth date and sex). Contradictory combinations are rejected with a 400. Set `invalid=true` for a deliberately wrong check digit.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| atAge | integer | Exact age in years at request time. |
| bornAfter | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornBefore | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornOn | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case values. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| invalid | boolean | Return an asmens kodas with a deliberately wrong check digit; birth date/sex stay valid. |
| olderThan | integer | Minimum age in years at request time. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Encoded sex: "m" or "f". |
| youngerThan | integer | Maximum age in years at request time. |
Request
curl https://api.real-fake-data.com/v1/lt/asmens-kodasResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The asmens kodas in the requested form (currently the bare digits). |
| digits | string | The canonical 11-digit asmens kodas. |
| birthDate | string | The encoded birth date, ISO `YYYY-MM-DD`. |
| sex | "m" | "f" | Encoded sex: `m` (odd leading digit) or `f` (even leading digit). |
API reference
GET /v1/lt/company
Try on playgroundReturns a consistent synthetic Lithuanian company in one call: a full trading name with its legal form, plus the matching imonesKodas, pvm. Shape the name with `strategy` and `legalForm` (as on `/v1/lt/company-name`). Set `invalid=true` to corrupt the checksummed identifiers (the name stays intact), for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case values from the rare corners. |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Corrupt the checksummed identifiers, for testing validators. |
| legalForm | "any" | "none" | "UAB" | "AB" | "MB" | "IĮ" | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family for the company name. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/lt/companyResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form, or `null` when none was added. |
| imonesKodas | string | The matching imones-kodas identifier. |
| pvm | string | The matching pvm identifier. |
API reference
GET /v1/lt/company-name
Try on playgroundReturns a realistic synthetic Lithuanian company name across the naming families (coined, owner-surname, descriptive, modern), with an optional trailing legal form in its authentic local form. Pin `strategy` or `legalForm`, set `legalForm=none` to omit it, or `edge=true` for the punctuation-heavy / long-form corners.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case names (punctuation-heavy families, long/rare forms). |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| legalForm | "any" | "none" | "UAB" | "AB" | "MB" | "IĮ" | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/lt/company-nameResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form (e.g. `GmbH`, `S.r.l.`), or `null` when none was added. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Which naming family produced the name. |
API reference
GET /v1/lt/email
Try on playgroundReturns a realistic synthetic Lithuanian email address: a name-based local part (romanised to ASCII) on a free webmail, a Lithuanian regional provider, or a corporate domain built from a Lithuanian company brand. `domain` pins an exact domain; `domainCategory` (`free`/`regional`/`corporate`/`any`) scopes a weighted-random draw. `pattern` selects the local-part shape or `any`. `plusTag` controls plus-addressing; `exotic=true` allows the rarer RFC-valid characters.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| domain | stringpattern ^[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ | Pin an exact domain, e.g. "gmail.com". Overrides domainCategory. |
| domainCategory | "free" | "regional" | "corporate" | "any" | Scope the random domain draw: free webmail, regional providers, corporate domains, or any. |
| edge | boolean | Restrict output to edge-case addresses from the rare corners of the format. |
| exotic | boolean | Allow rarer RFC-valid local-part characters (%, =, ~). Off by default. |
| extreme | boolean | Return a correct address whose value is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). localPart, domain, and the decomposition stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | "any" | Local-part shape, e.g. "first.last"; "any" picks a weighted-random one. |
| plusTag | stringpattern ^[A-Za-z0-9_-]+$ | Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/lt/emailResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full email address, e.g. "anna.schmidt+news@mueller-bau.de". |
| localPart | string | The part before the `@`, including any plus tag. |
| domain | string | The domain, e.g. "gmail.com", "wp.pl", or "mueller-bau.de". |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | Which local-part pattern produced the address. |
| domainCategory | "free" | "regional" | "corporate" | Whether the domain is free, regional, or corporate. |
| company | string | The company name a corporate domain or company local-part was derived from, or `null`. |
| plusTag | string | The plus-addressing tag, or `null` when none. |
API reference
GET /v1/lt/iban
Try on playgroundReturns a valid Lithuanian IBAN with a correct checksum. Pin the issuing bank with `bankCode` (5-digit bank code) or `bankName` (mutually exclusive), or let it be chosen at random. Set `invalid=true` to get an IBAN with deliberately wrong check digits, for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| bankCode | string | Pin the issuing bank by its 5-digit bank code. Mutually exclusive with bankName. |
| bankName | string | Pin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case IBANs from the rare corners of the format. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "grouped" | "compact" | IBAN rendering: grouped or compact. Default grouped. |
| invalid | boolean | Return an IBAN with deliberately wrong check digits, for testing validators. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/lt/ibanResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The IBAN in the requested format. |
| electronicFormat | string | The space-free electronic form of the IBAN. |
| bankCode | string | The bank identifier embedded in the IBAN. |
| bankName | string | Human-readable name of the issuing bank. |
API reference
GET /v1/lt/imones-kodas
Try on playgroundReturns a valid Lithuanian įmonės kodas (company code) with a correct two-pass mod-11 check digit. The code is non-semantic. Set `invalid=true` for an įmonės kodas with a deliberately wrong check digit.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case įmonės koods from the rare corners. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| invalid | boolean | Return an įmonės kodas with a deliberately wrong check digit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/lt/imones-kodasResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The įmonės kodas in the requested form (currently the bare digits). |
| digits | string | The canonical 9-digit įmonės kodas. |
API reference
GET /v1/lt/person
Try on playgroundReturns a synthetic Lithuanian person: given name(s), surname, initials, birth date, and the matching asmens kodas. Constrain with `sex` and age/birth-date filters (contradictory combinations are rejected with a 400). Set `invalid=true` for a deliberately wrong check value, `edge=true` for rare-corner values, and `caseStrict=false` to mangle the name casing.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| atAge | integer | Exact age in years at request time. |
| bornAfter | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornBefore | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornOn | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD. |
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname; initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias the number and name shape toward their rarely-exercised corners. |
| extreme | boolean | Return a correct person whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials, birthDate, and the national identifier stay clean. |
| invalid | boolean | Return a person whose asmens kodas has a deliberately wrong check value. |
| olderThan | integer | Minimum age in years at request time. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Encoded sex: "m" or "f". |
| youngerThan | integer | Maximum age in years at request time. |
Request
curl https://api.real-fake-data.com/v1/lt/personResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s). |
| surname | string | Surname. |
| initials | string | Uppercase initials of name and surname, no dots. |
| birthDate | string | The birth date, ISO `YYYY-MM-DD`. |
| asmensKodas | string | The matching asmens kodas. |
API reference
GET /v1/lt/person-name
Try on playgroundReturns a realistic synthetic Lithuanian person name: given name(s), surname, and initials, in the local script. Use `sex` to pin the gendered form (`m`/`f`) or omit it for a random one. `edge=true` biases the name shape — second given names, double-barrelled surnames, and very short names become far more likely. Set `caseStrict=false` to deliberately mangle the name/surname casing (initials stay proper uppercase).
Query parameters
| Parameter | Type | Description |
|---|---|---|
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname (all-lower, all-upper, or random); initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias toward edge-case name shapes (second given names, double surnames, short names). |
| extreme | boolean | Return a correct name whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Gendered form of the name: "m" or "f". Omit for random. |
Request
curl https://api.real-fake-data.com/v1/lt/person-nameResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s), in the local script, agreeing with the reported sex. |
| surname | string | Surname in the form matching the sex (inflected where the language requires it). |
| initials | string | Uppercase initials of name and surname, no dots, e.g. `JK`. |
| sex | "m" | "f" | The sex the name was inflected for. |
API reference
GET /v1/lt/offering
Try on playgroundReturns a realistic synthetic Lithuanian offering — a product or service with a localized name, a plausible EUR price, its unit, and its industry label. Pin `industry` (NACE code), `type` (product/service), or filter by `industryName`/`offeringName` full text. Set `edge=true` for the price/format corners, `extreme=true` for a hostile-encoded name, or `invalid=true` for a broken record.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict to edge-case offerings (price-band extremes, unusual units, long names). |
| extreme | boolean | Return a correct offering whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, homoglyphs, or bidi marks). Price, unit and industry label stay clean. |
| industry | "73" | "28.3" | "93.2" | "71" | "90" | "29.3" | "10.7" | "64" | "56.30" | "11" | "30.1" | "47.6" | "26.7" | "95.3" | "56.21" | "23.4" | "81.2" | "14" | "95.1" | "26.2" | "41" | "70" | "26.4" | "49.4" | "10.5" | "74.1" | "85" | "43.2" | "82.3" | "59" | "56.12" | "31" | "92" | "81.3" | "23.1" | "47.1" | "96.2" | "27.5" | "86.1" | "55" | "65" | "32.1" | "96.1" | "15" | "69" | "86.2" | "91.2" | "32.2" | "21" | "74.2" | "58" | "68" | "78" | "43.3" | "77" | "56.11" | "80" | "62" | "10.8" | "93.1" | "32.3" | "61" | "13" | "32.4" | "74.3" | "79" | "75" | "63" | "16" | Pin the industry by NACE code. Omit to draw across all covered industries. |
| industryName | string | Full-text filter: keep offerings whose localized industry label contains this. |
| invalid | boolean | Return a deliberately invalid offering (a price outside its band, a negative price, or an empty name) for negative-path testing. Cannot combine with edge/extreme. |
| language | "lt" | Pin the name language. Omit for the country’s weighted mix. |
| offeringName | string | Full-text filter: keep offerings whose localized name contains this. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "product" | "service" | Restrict to products or services. Omit for both. |
Request
curl https://api.real-fake-data.com/v1/lt/offeringResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The offering name in the resolved language. |
| offeringName | string | The full offering name (alias of `value`). |
| kind | "product" | "service" | Whether it is a good or a rendered service. |
| unit | string | The unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …). |
| price | integer | A single plausible price, in EUR minor units (cents). |
| currency | "EUR" | Currency of `price`; always EUR. |
| industryCode | string | NACE Rev. 2.1 code of the offering’s industry. |
| industryName | string | The localized industry label in the resolved language. |
| language | string | BCP-47 subtag used for this record’s names. |
API reference
GET /v1/lt/pvm
Try on playgroundReturns a valid Lithuanian PVM mokėtojo kodas (VAT identification number) with a correct two-pass mod-11 check digit. Use `format=vat` for the `LT`-prefixed form. Set `invalid=true` for a PVM number with a deliberately wrong check digit.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case PVM numbers from the rare corners. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "national" | "vat" | Rendering: bare 9-digit PVM number (default) or LT-prefixed VAT number. |
| invalid | boolean | Return a PVM number with a deliberately wrong check digit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/lt/pvmResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The PVM number in the requested format (national or LT-prefixed VAT). |
| digits | string | The canonical, unprefixed 9-digit PVM number. |
API reference
GET /v1/lt/vehicle-registration
Try on playgroundReturns a realistic Lithuanian vehicle registration plate. `type` selects the kind: `standard` (default, `LLL NNN`, e.g. MUT 375), `custom` (vanity, one solid block with at least one digit, e.g. LT2024), `military` (`LK NNN L`), `diplomatic` (digits-only `NN N NNN`), `motorcycle` (`NNN LL`), `moped` (`NN LLL`), `trailer` (`LL NNN`), `ev` (`E<L> NNNN`), `taxi` (`T NNNNN`), `historic` (`H NNNNN`), or `dealer` (`P NNNNN`). The number is nationwide sequential and encodes no region, and no plate carries a checksum. Use `format` to choose spaced or compact rendering (ignored for `custom`).
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case plates from the rare corners of the format. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "with-space" | "compact" | Plate rendering: with a space or compact. Default with-space. Ignored for custom. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "standard" | "custom" | "military" | "diplomatic" | "motorcycle" | "moped" | "trailer" | "ev" | "taxi" | "historic" | "dealer" | Plate kind: standard, custom, military, diplomatic, motorcycle, moped, trailer, ev, taxi, historic, or dealer. |
Request
curl https://api.real-fake-data.com/v1/lt/vehicle-registrationResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The plate in the requested format, e.g. "MUT 375". |
| type | "standard" | "custom" | "military" | "diplomatic" | "motorcycle" | "moped" | "trailer" | "ev" | "taxi" | "historic" | "dealer" | Which kind of plate this is. |
API reference
GET /v1/lu/company
Try on playgroundReturns a consistent synthetic Luxembourg company in one call: a full trading name with its legal form, plus the matching tva. Shape the name with `strategy` and `legalForm` (as on `/v1/lu/company-name`). Set `invalid=true` to corrupt the checksummed identifiers (the name stays intact), for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case values from the rare corners. |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Corrupt the checksummed identifiers, for testing validators. |
| legalForm | "any" | "none" | "S.à r.l." | "S.A." | "S.e.n.c." | "SARL-S" | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family for the company name. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/lu/companyResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form, or `null` when none was added. |
| tva | string | The matching tva identifier. |
API reference
GET /v1/lu/company-name
Try on playgroundReturns a realistic synthetic Luxembourg company name across the naming families (coined, owner-surname, descriptive, modern), with an optional trailing legal form in its authentic local form. Pin `strategy` or `legalForm`, set `legalForm=none` to omit it, or `edge=true` for the punctuation-heavy / long-form corners.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case names (punctuation-heavy families, long/rare forms). |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| legalForm | "any" | "none" | "S.à r.l." | "S.A." | "S.e.n.c." | "SARL-S" | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/lu/company-nameResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form (e.g. `GmbH`, `S.r.l.`), or `null` when none was added. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Which naming family produced the name. |
API reference
GET /v1/lu/email
Try on playgroundReturns a realistic synthetic Luxembourg email address: a name-based local part (romanised to ASCII) on a free webmail, a Luxembourg regional provider, or a corporate domain built from a Luxembourg company brand. `domain` pins an exact domain; `domainCategory` (`free`/`regional`/`corporate`/`any`) scopes a weighted-random draw. `pattern` selects the local-part shape or `any`. `plusTag` controls plus-addressing; `exotic=true` allows the rarer RFC-valid characters.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| domain | stringpattern ^[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ | Pin an exact domain, e.g. "gmail.com". Overrides domainCategory. |
| domainCategory | "free" | "regional" | "corporate" | "any" | Scope the random domain draw: free webmail, regional providers, corporate domains, or any. |
| edge | boolean | Restrict output to edge-case addresses from the rare corners of the format. |
| exotic | boolean | Allow rarer RFC-valid local-part characters (%, =, ~). Off by default. |
| extreme | boolean | Return a correct address whose value is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). localPart, domain, and the decomposition stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | "any" | Local-part shape, e.g. "first.last"; "any" picks a weighted-random one. |
| plusTag | stringpattern ^[A-Za-z0-9_-]+$ | Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/lu/emailResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full email address, e.g. "anna.schmidt+news@mueller-bau.de". |
| localPart | string | The part before the `@`, including any plus tag. |
| domain | string | The domain, e.g. "gmail.com", "wp.pl", or "mueller-bau.de". |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | Which local-part pattern produced the address. |
| domainCategory | "free" | "regional" | "corporate" | Whether the domain is free, regional, or corporate. |
| company | string | The company name a corporate domain or company local-part was derived from, or `null`. |
| plusTag | string | The plus-addressing tag, or `null` when none. |
API reference
GET /v1/lu/iban
Try on playgroundReturns a valid Luxembourg IBAN with a correct checksum. Pin the issuing bank with `bankCode` (3-digit bank code) or `bankName` (mutually exclusive), or let it be chosen at random. Set `invalid=true` to get an IBAN with deliberately wrong check digits, for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| bankCode | string | Pin the issuing bank by its 3-digit bank code. Mutually exclusive with bankName. |
| bankName | string | Pin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case IBANs from the rare corners of the format. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "grouped" | "compact" | IBAN rendering: grouped or compact. Default grouped. |
| invalid | boolean | Return an IBAN with deliberately wrong check digits, for testing validators. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/lu/ibanResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The IBAN in the requested format. |
| electronicFormat | string | The space-free electronic form of the IBAN. |
| bankCode | string | The bank identifier embedded in the IBAN. |
| bankName | string | Human-readable name of the issuing bank. |
API reference
GET /v1/lu/matricule
Try on playgroundReturns a valid Luxembourg matricule (national identification number) with correct check digits. The matricule encodes the full birth date (but no sex); constrain it with age/birth-date filters. Contradictory combinations are rejected with a 400. Set `invalid=true` for deliberately wrong check digits.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| atAge | integer | Exact age in years at request time. |
| bornAfter | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornBefore | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornOn | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case values. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| invalid | boolean | Return a matricule with deliberately wrong check digits; the birth date stays valid. |
| olderThan | integer | Minimum age in years at request time. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| youngerThan | integer | Maximum age in years at request time. |
Request
curl https://api.real-fake-data.com/v1/lu/matriculeResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The 13-digit matricule. |
| digits | string | The canonical 13-digit matricule. |
| birthDate | string | The encoded birth date, ISO `YYYY-MM-DD`. |
API reference
GET /v1/lu/person
Try on playgroundReturns a synthetic Luxembourg person: given name(s), surname, initials, birth date, and the matching matricule. Constrain with `sex` and age/birth-date filters (contradictory combinations are rejected with a 400). Set `invalid=true` for a deliberately wrong check value, `edge=true` for rare-corner values, and `caseStrict=false` to mangle the name casing.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| atAge | integer | Exact age in years at request time. |
| bornAfter | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornBefore | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornOn | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD. |
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname; initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias the number and name shape toward their rarely-exercised corners. |
| extreme | boolean | Return a correct person whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials, birthDate, and the national identifier stay clean. |
| invalid | boolean | Return a person whose matricule has a deliberately wrong check value. |
| olderThan | integer | Minimum age in years at request time. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Encoded sex: "m" or "f". |
| youngerThan | integer | Maximum age in years at request time. |
Request
curl https://api.real-fake-data.com/v1/lu/personResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s). |
| surname | string | Surname. |
| initials | string | Uppercase initials of name and surname, no dots. |
| birthDate | string | The birth date, ISO `YYYY-MM-DD`. |
| matricule | string | The matching matricule. |
API reference
GET /v1/lu/person-name
Try on playgroundReturns a realistic synthetic Luxembourg person name: given name(s), surname, and initials, in the local script. Use `sex` to pin the gendered form (`m`/`f`) or omit it for a random one. `edge=true` biases the name shape — second given names, double-barrelled surnames, and very short names become far more likely. Set `caseStrict=false` to deliberately mangle the name/surname casing (initials stay proper uppercase).
Query parameters
| Parameter | Type | Description |
|---|---|---|
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname (all-lower, all-upper, or random); initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias toward edge-case name shapes (second given names, double surnames, short names). |
| extreme | boolean | Return a correct name whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Gendered form of the name: "m" or "f". Omit for random. |
Request
curl https://api.real-fake-data.com/v1/lu/person-nameResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s), in the local script, agreeing with the reported sex. |
| surname | string | Surname in the form matching the sex (inflected where the language requires it). |
| initials | string | Uppercase initials of name and surname, no dots, e.g. `JK`. |
| sex | "m" | "f" | The sex the name was inflected for. |
API reference
GET /v1/lu/offering
Try on playgroundReturns a realistic synthetic Luxembourg offering — a product or service with a localized name, a plausible EUR price, its unit, and its industry label. Luxembourg is multilingual: without a pinned `language`, names draw from the weighted fr/de/lb mix. Pin `industry` (NACE code), `type` (product/service), or filter by `industryName`/`offeringName` full text. Set `edge=true` for the price/format corners, `extreme=true` for a hostile-encoded name, or `invalid=true` for a broken record.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict to edge-case offerings (price-band extremes, unusual units, long names). |
| extreme | boolean | Return a correct offering whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, homoglyphs, or bidi marks). Price, unit and industry label stay clean. |
| industry | "73" | "28.3" | "93.2" | "71" | "90" | "29.3" | "10.7" | "64" | "56.30" | "11" | "30.1" | "47.6" | "26.7" | "95.3" | "56.21" | "23.4" | "81.2" | "14" | "95.1" | "26.2" | "41" | "70" | "26.4" | "49.4" | "10.5" | "74.1" | "85" | "43.2" | "82.3" | "59" | "56.12" | "31" | "92" | "81.3" | "23.1" | "47.1" | "96.2" | "27.5" | "86.1" | "55" | "65" | "32.1" | "96.1" | "15" | "69" | "86.2" | "91.2" | "32.2" | "21" | "74.2" | "58" | "68" | "78" | "43.3" | "77" | "56.11" | "80" | "62" | "10.8" | "93.1" | "32.3" | "61" | "13" | "32.4" | "74.3" | "79" | "75" | "63" | "16" | Pin the industry by NACE code. Omit to draw across all covered industries. |
| industryName | string | Full-text filter: keep offerings whose localized industry label contains this. |
| invalid | boolean | Return a deliberately invalid offering (a price outside its band, a negative price, or an empty name) for negative-path testing. Cannot combine with edge/extreme. |
| language | "fr" | "de" | "lb" | Pin the name language. Omit for the country’s weighted mix. |
| offeringName | string | Full-text filter: keep offerings whose localized name contains this. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "product" | "service" | Restrict to products or services. Omit for both. |
Request
curl https://api.real-fake-data.com/v1/lu/offeringResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The offering name in the resolved language. |
| offeringName | string | The full offering name (alias of `value`). |
| kind | "product" | "service" | Whether it is a good or a rendered service. |
| unit | string | The unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …). |
| price | integer | A single plausible price, in EUR minor units (cents). |
| currency | "EUR" | Currency of `price`; always EUR. |
| industryCode | string | NACE Rev. 2.1 code of the offering’s industry. |
| industryName | string | The localized industry label in the resolved language. |
| language | string | BCP-47 subtag used for this record’s names. |
API reference
GET /v1/lu/tva
Try on playgroundReturns a valid Luxembourg TVA (VAT identifier) with a correct two-digit check pair. Use `format=vat` for the LU-prefixed VAT number. Set `invalid=true` for a TVA with a deliberately wrong check pair.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case TVAs from the rare corners. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "national" | "vat" | Rendering: bare 8-digit TVA (default) or the LU-prefixed VAT number. |
| invalid | boolean | Return a TVA with a deliberately wrong two-digit check pair. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/lu/tvaResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The identifier in the requested format (national or VAT). |
| digits | string | The canonical, unprefixed 8-digit TVA. |
API reference
GET /v1/lu/vehicle-registration
Try on playgroundReturns a realistic Luxembourgish vehicle registration plate. `type` selects the kind: `standard` (default, `LL NNNN`, e.g. AB 1234), `custom` (vanity `LL NNNN`/`LL NNNNN`/`NNNN`), `military` (`NNNN`), `diplomatic` (`CD NN-NN`), `official` (`AA NNNN`), `dealer` (`NNNN RG`), `export` (`NNNN EXP`), `moped` (`LL NN`), or `deputies` (`P` + 1–2 digits). `era` surfaces the still-issued legacy pure-numeric personalised plates for the standard type (`current`, `legacy`, or `both`; ignored otherwise). Luxembourg carries no region code and no checksum, so there is no `invalid` variant. Use `format` to choose spaced or compact rendering.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case plates from the rare corners of the format. |
| era | "current" | "legacy" | "both" | Vintage of the standard format: current (LL NNNN), legacy (pure-numeric) or both. Standard plates only. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "with-space" | "compact" | Plate rendering: with a space or compact. Default with-space. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "standard" | "custom" | "military" | "diplomatic" | "official" | "dealer" | "export" | "moped" | "deputies" | Plate kind: standard, custom, military, diplomatic, official, dealer, export, moped, or deputies. |
Request
curl https://api.real-fake-data.com/v1/lu/vehicle-registrationResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The plate in the requested format, e.g. "AB 1234". |
| type | "standard" | "custom" | "military" | "diplomatic" | "official" | "dealer" | "export" | "moped" | "deputies" | Which kind of plate this is. |
API reference
GET /v1/mt/company
Try on playgroundReturns a consistent synthetic Maltese company in one call: a full trading name with its legal form, plus the matching vat. Shape the name with `strategy` and `legalForm` (as on `/v1/mt/company-name`). Set `invalid=true` to corrupt the checksummed identifiers (the name stays intact), for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case values from the rare corners. |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Corrupt the checksummed identifiers, for testing validators. |
| legalForm | "any" | "none" | "Ltd" | "plc" | "Co. Ltd" | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family for the company name. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/mt/companyResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form, or `null` when none was added. |
| vat | string | The matching vat identifier. |
API reference
GET /v1/mt/company-name
Try on playgroundReturns a realistic synthetic Maltese company name across the naming families (coined, owner-surname, descriptive, modern), with an optional trailing legal form in its authentic local form. Pin `strategy` or `legalForm`, set `legalForm=none` to omit it, or `edge=true` for the punctuation-heavy / long-form corners.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case names (punctuation-heavy families, long/rare forms). |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| legalForm | "any" | "none" | "Ltd" | "plc" | "Co. Ltd" | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/mt/company-nameResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form (e.g. `GmbH`, `S.r.l.`), or `null` when none was added. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Which naming family produced the name. |
API reference
GET /v1/mt/email
Try on playgroundReturns a realistic synthetic Maltese email address: a name-based local part (romanised to ASCII) on a free webmail, a Maltese regional provider, or a corporate domain built from a Maltese company brand. `domain` pins an exact domain; `domainCategory` (`free`/`regional`/`corporate`/`any`) scopes a weighted-random draw. `pattern` selects the local-part shape or `any`. `plusTag` controls plus-addressing; `exotic=true` allows the rarer RFC-valid characters.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| domain | stringpattern ^[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ | Pin an exact domain, e.g. "gmail.com". Overrides domainCategory. |
| domainCategory | "free" | "regional" | "corporate" | "any" | Scope the random domain draw: free webmail, regional providers, corporate domains, or any. |
| edge | boolean | Restrict output to edge-case addresses from the rare corners of the format. |
| exotic | boolean | Allow rarer RFC-valid local-part characters (%, =, ~). Off by default. |
| extreme | boolean | Return a correct address whose value is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). localPart, domain, and the decomposition stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | "any" | Local-part shape, e.g. "first.last"; "any" picks a weighted-random one. |
| plusTag | stringpattern ^[A-Za-z0-9_-]+$ | Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/mt/emailResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full email address, e.g. "anna.schmidt+news@mueller-bau.de". |
| localPart | string | The part before the `@`, including any plus tag. |
| domain | string | The domain, e.g. "gmail.com", "wp.pl", or "mueller-bau.de". |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | Which local-part pattern produced the address. |
| domainCategory | "free" | "regional" | "corporate" | Whether the domain is free, regional, or corporate. |
| company | string | The company name a corporate domain or company local-part was derived from, or `null`. |
| plusTag | string | The plus-addressing tag, or `null` when none. |
API reference
GET /v1/mt/iban
Try on playgroundReturns a valid Maltese IBAN with a correct checksum. Pin the issuing bank with `bankCode` (4-letter bank code) or `bankName` (mutually exclusive), or let it be chosen at random. Set `invalid=true` to get an IBAN with deliberately wrong check digits, for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| bankCode | string | Pin the issuing bank by its 4-letter bank code. Mutually exclusive with bankName. |
| bankName | string | Pin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case IBANs from the rare corners of the format. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "grouped" | "compact" | IBAN rendering: grouped or compact. Default grouped. |
| invalid | boolean | Return an IBAN with deliberately wrong check digits, for testing validators. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/mt/ibanResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The IBAN in the requested format. |
| electronicFormat | string | The space-free electronic form of the IBAN. |
| bankCode | string | The bank identifier embedded in the IBAN. |
| bankName | string | Human-readable name of the issuing bank. |
API reference
GET /v1/mt/id-card
Try on playgroundReturns a Maltese identity card number: up to 7 digits followed by a single category letter (Maltese/Gozitan, century of issue, foreign residence, or citizen born abroad). The letter is a classification, not a checksum. Use `category` to pin the letter.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| category | "M" | "G" | "A" | "P" | "L" | "H" | "B" | "Z" | Force the category letter: M/G/A/P/L/H/B/Z. Omit for a random category. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case cards from the rare corners. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/mt/id-cardResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full identity card number, digits + category letter. |
| digits | string | The leading digits (1–7 of them), e.g. "123456". |
| category | "M" | "G" | "A" | "P" | "L" | "H" | "B" | "Z" | The trailing category letter classifying the holder. |
API reference
GET /v1/mt/person
Try on playgroundReturns a synthetic Maltese person: given name(s), surname, initials, birth date, and the matching ID-card number. Constrain with `sex` and age/birth-date filters (contradictory combinations are rejected with a 400). Set `invalid=true` for a deliberately wrong check value, `edge=true` for rare-corner values, and `caseStrict=false` to mangle the name casing.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| atAge | integer | Exact age in years at request time. |
| bornAfter | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornBefore | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornOn | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD. |
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname; initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias the number and name shape toward their rarely-exercised corners. |
| extreme | boolean | Return a correct person whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials, birthDate, and the national identifier stay clean. |
| invalid | boolean | Return a person whose ID-card number has a deliberately wrong check value. |
| olderThan | integer | Minimum age in years at request time. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Encoded sex: "m" or "f". |
| youngerThan | integer | Maximum age in years at request time. |
Request
curl https://api.real-fake-data.com/v1/mt/personResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s). |
| surname | string | Surname. |
| initials | string | Uppercase initials of name and surname, no dots. |
| birthDate | string | The birth date, ISO `YYYY-MM-DD`. |
| idCard | string | The matching ID-card number. |
API reference
GET /v1/mt/person-name
Try on playgroundReturns a realistic synthetic Maltese person name: given name(s), surname, and initials, in the local script. Use `sex` to pin the gendered form (`m`/`f`) or omit it for a random one. `edge=true` biases the name shape — second given names, double-barrelled surnames, and very short names become far more likely. Set `caseStrict=false` to deliberately mangle the name/surname casing (initials stay proper uppercase).
Query parameters
| Parameter | Type | Description |
|---|---|---|
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname (all-lower, all-upper, or random); initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias toward edge-case name shapes (second given names, double surnames, short names). |
| extreme | boolean | Return a correct name whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Gendered form of the name: "m" or "f". Omit for random. |
Request
curl https://api.real-fake-data.com/v1/mt/person-nameResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s), in the local script, agreeing with the reported sex. |
| surname | string | Surname in the form matching the sex (inflected where the language requires it). |
| initials | string | Uppercase initials of name and surname, no dots, e.g. `JK`. |
| sex | "m" | "f" | The sex the name was inflected for. |
API reference
GET /v1/mt/offering
Try on playgroundReturns a realistic synthetic Maltese offering — a product or service with a localized name, a plausible EUR price, its unit, and its industry label. Maltese is multilingual: without a pinned `language`, names draw from the weighted mt/en mix. Pin `industry` (NACE code), `type` (product/service), or filter by `industryName`/`offeringName` full text. Set `edge=true` for the price/format corners, `extreme=true` for a hostile-encoded name, or `invalid=true` for a broken record.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict to edge-case offerings (price-band extremes, unusual units, long names). |
| extreme | boolean | Return a correct offering whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, homoglyphs, or bidi marks). Price, unit and industry label stay clean. |
| industry | "73" | "28.3" | "93.2" | "71" | "90" | "29.3" | "10.7" | "64" | "56.30" | "11" | "30.1" | "47.6" | "26.7" | "95.3" | "56.21" | "23.4" | "81.2" | "14" | "95.1" | "26.2" | "41" | "70" | "26.4" | "49.4" | "10.5" | "74.1" | "85" | "43.2" | "82.3" | "59" | "56.12" | "31" | "92" | "81.3" | "23.1" | "47.1" | "96.2" | "27.5" | "86.1" | "55" | "65" | "32.1" | "96.1" | "15" | "69" | "86.2" | "91.2" | "32.2" | "21" | "74.2" | "58" | "68" | "78" | "43.3" | "77" | "56.11" | "80" | "62" | "10.8" | "93.1" | "32.3" | "61" | "13" | "32.4" | "74.3" | "79" | "75" | "63" | "16" | Pin the industry by NACE code. Omit to draw across all covered industries. |
| industryName | string | Full-text filter: keep offerings whose localized industry label contains this. |
| invalid | boolean | Return a deliberately invalid offering (a price outside its band, a negative price, or an empty name) for negative-path testing. Cannot combine with edge/extreme. |
| language | "mt" | "en" | Pin the name language. Omit for the country’s weighted mix. |
| offeringName | string | Full-text filter: keep offerings whose localized name contains this. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "product" | "service" | Restrict to products or services. Omit for both. |
Request
curl https://api.real-fake-data.com/v1/mt/offeringResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The offering name in the resolved language. |
| offeringName | string | The full offering name (alias of `value`). |
| kind | "product" | "service" | Whether it is a good or a rendered service. |
| unit | string | The unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …). |
| price | integer | A single plausible price, in EUR minor units (cents). |
| currency | "EUR" | Currency of `price`; always EUR. |
| industryCode | string | NACE Rev. 2.1 code of the offering’s industry. |
| industryName | string | The localized industry label in the resolved language. |
| language | string | BCP-47 subtag used for this record’s names. |
API reference
GET /v1/mt/vat
Try on playgroundReturns a valid Maltese VAT number (8 digits with a correct mod-37 check). Use `format=vat` for the `MT`-prefixed form. Set `invalid=true` for a number with a deliberately wrong check.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case VAT numbers from the rare corners. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "national" | "vat" | Rendering: bare 8-digit national number (default) or MT-prefixed VAT number. |
| invalid | boolean | Return a number with a deliberately wrong mod-37 check digit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/mt/vatResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The VAT number in the requested format (national or MT-prefixed). |
| digits | string | The canonical, unprefixed 8-digit number. |
API reference
GET /v1/mt/vehicle-registration
Try on playgroundReturns a realistic Maltese vehicle registration plate. `type` selects the kind: `standard` (default, `LLL NNN`, e.g. HBI 968) whose first letter encodes the road-licence expiry month, `motorcycle` (same scheme), `military` (`GVA`), `government` (`GV<L>`), `diplomatic` (`CD<L>`), `taxi` (`TAXI …M/G`), `bus`, `trailer` (`TR`), `tax-free` (`TF<L>`), or `custom` (free-form vanity). Pin a standard/motorcycle plate to a specific expiry month via `expiryMonth` (an unknown month is a 400). Malta carries no region on the plate and no plate has a checksum. Use `format` to choose spaced or compact rendering.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case plates from the rare corners of the format. |
| expiryMonth | string | Pin a standard/motorcycle plate to a road-licence expiry month (full English name, e.g. August). An unknown month is a 400. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "with-space" | "compact" | Plate rendering: with a space or compact. Default with-space. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "standard" | "motorcycle" | "military" | "government" | "diplomatic" | "taxi" | "bus" | "trailer" | "tax-free" | "custom" | Plate kind: standard, motorcycle, military, government, diplomatic, taxi, bus, trailer, tax-free, or custom. |
Request
curl https://api.real-fake-data.com/v1/mt/vehicle-registrationResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The plate in the requested format, e.g. "HBI 968". |
| type | "standard" | "motorcycle" | "military" | "government" | "diplomatic" | "taxi" | "bus" | "trailer" | "tax-free" | "custom" | Which kind of plate this is. |
| expiryMonthoptional | string | The road-licence expiry month encoded by the first letter (e.g. August). Present only for standard/motorcycle plates. |
API reference
GET /v1/pl/address
Try on playgroundReturns a realistic Polish address drawn from real cities and streets. Narrow the location with a `teryt` prefix (1–7 digits).
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case addresses (street-less localities, awkward names/numbers). |
| extreme | boolean | Return a correct address whose text fields (streetFullName, buildingNumber, postalCode, cityName) are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). Administrative names and TERYT codes stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| teryt | stringpattern ^\d{1,7}$ | Restrict output to a region by TERYT prefix (1–7 digits). |
Request
curl https://api.real-fake-data.com/v1/pl/addressResponse fields
| Field | Type | Description |
|---|---|---|
| streetFullNameoptional | string | |
| buildingNumber | string | |
| postalCode | string | |
| cityName | string | |
| municipalityName | string | |
| countyName | string | |
| voivodeshipName | string | |
| terytCodes | object |
API reference
GET /v1/pl/company
Try on playgroundReturns a consistent synthetic Polish company in one call: a full trading name with its legal form, plus the matching NIP and REGON. Shape the name with `strategy`, `legalForm`, and `activityPrefix` (as on `/v1/pl/company-name`) and the NIP rendering with `format` (`with-hyphens`, `digits-only`); the REGON is always the 9-digit form a company is issued. Set `invalid=true` to corrupt both the NIP and REGON check digits (the name stays intact), for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| activityPrefix | boolean | Force ("true") or forbid ("false") a leading activity prefix (PPHU, FHU). |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case values from the rare corners. |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| format | "with-hyphens" | "digits-only" | NIP rendering: with hyphens or digits only. |
| invalid | boolean | Corrupt both the NIP and REGON check digits, for testing validators. |
| legalForm | "Sp. z o.o." | "Sp. z o.o. sp.k." | "P.S.A." | "S.A." | "Sp. j." | "Sp. k." | "S.C." | "any" | "none" | Append a specific Polish legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | "any" | Naming family for the company name (morpheme, surname, descriptive, modern); "any" picks weighted-random. |
Request
curl https://api.real-fake-data.com/v1/pl/companyResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | The full company name, including any prefix and legal form. |
| legalForm | "Sp. z o.o." | "Sp. z o.o. sp.k." | "P.S.A." | "S.A." | "Sp. j." | "Sp. k." | "S.C." | The appended legal form, or `null` when none was added. |
| nip | string | The matching NIP, in the requested format. |
| regon | string | The matching 9-digit REGON. |
| krs | string | The 10-digit KRS number, or null for non-KRS entities (e.g. S.C.). |
API reference
GET /v1/pl/company-name
Try on playgroundReturns a realistic synthetic Polish company name. Use `strategy` to choose a naming family — `morpheme` (coined, e.g. "Polbud"), `surname` (e.g. "Kowalski i Syn"), `descriptive` (e.g. 'Firma Handlowo-Usługowa "Marbud"'), `modern` (e.g. "TechSoft Solutions") — or `any` to pick one at random. `legalForm` appends a specific form, `any` for a weighted-random one, or `none` to omit it. `activityPrefix` forces or forbids a leading "PPHU"/"FHU"-style prefix.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| activityPrefix | boolean | Force ("true") or forbid ("false") a leading activity prefix (PPHU, FHU). Omit to let the generator decide. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case names from the rare corners. |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| legalForm | "Sp. z o.o." | "Sp. z o.o. sp.k." | "P.S.A." | "S.A." | "Sp. j." | "Sp. k." | "S.C." | "any" | "none" | Append a specific Polish legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | "any" | Naming family (morpheme, surname, descriptive, modern); "any" picks weighted-random. |
Request
curl https://api.real-fake-data.com/v1/pl/company-nameResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full company name, including any prefix and legal form. |
| legalForm | "Sp. z o.o." | "Sp. z o.o. sp.k." | "P.S.A." | "S.A." | "Sp. j." | "Sp. k." | "S.C." | The appended legal form, or `null` when none was added. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Which naming family produced the name. |
API reference
GET /v1/pl/driving-license
Try on playgroundReturns a realistic synthetic Polish driving licence number (numer prawa jazdy), shaped `NNNNN/YY/NNNN`. The value carries NO checksum — it is realistically shaped test data, not a register-valid number. Use `format` to choose between slashed and compact rendering, and `year` to fix the 4-digit issue year (within the supported range, otherwise a 400).
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case licence numbers from the rare corners of the format. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "with-slashes" | "compact" | Licence-number rendering: with slashes or compact. Default with-slashes. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| year | integer | Full four-digit issue year encoded in the licence. Out-of-range values return a 400. |
Request
curl https://api.real-fake-data.com/v1/pl/driving-licenseResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The licence number in the requested format. |
| serial | string | The five-digit serial block, e.g. "08234". |
| year | integer | The full four-digit issue year, e.g. 2019. |
| suffix | string | The four-digit suffix block, e.g. "4521". |
API reference
GET /v1/pl/email
Try on playgroundReturns a realistic synthetic Polish email address: a name-based local part (romanised to ASCII) on a free webmail, a Polish regional provider, or a corporate domain built from a Polish company brand. `domain` pins an exact domain; `domainCategory` (`free`/`regional`/`corporate`/`any`) scopes a weighted-random draw. `pattern` selects the local-part shape or `any`. `plusTag` controls plus-addressing; `exotic=true` allows the rarer RFC-valid characters.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| domain | stringpattern ^[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ | Pin an exact domain, e.g. "gmail.com". Overrides domainCategory. |
| domainCategory | "free" | "regional" | "corporate" | "any" | Scope the random domain draw: free webmail, regional providers, corporate domains, or any. |
| edge | boolean | Restrict output to edge-case addresses from the rare corners of the format. |
| exotic | boolean | Allow rarer RFC-valid local-part characters (%, =, ~). Off by default. |
| extreme | boolean | Return a correct address whose value is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). localPart, domain, and the decomposition stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | "any" | Local-part shape, e.g. "first.last"; "any" picks a weighted-random one. |
| plusTag | stringpattern ^[A-Za-z0-9_-]+$ | Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/pl/emailResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full email address, e.g. "anna.schmidt+news@mueller-bau.de". |
| localPart | string | The part before the `@`, including any plus tag. |
| domain | string | The domain, e.g. "gmail.com", "wp.pl", or "mueller-bau.de". |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | Which local-part pattern produced the address. |
| domainCategory | "free" | "regional" | "corporate" | Whether the domain is free, regional, or corporate. |
| company | string | The company name a corporate domain or company local-part was derived from, or `null`. |
| plusTag | string | The plus-addressing tag, or `null` when none. |
API reference
GET /v1/pl/iban
Try on playgroundReturns a valid Polish IBAN with a correct checksum. Pin the issuing bank with `bankCode` or `bankName` (mutually exclusive), or let it be chosen at random. Set `invalid=true` to get an IBAN with deliberately wrong check digits, for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| bankCode | stringpattern ^\d{4}$ | Pin the issuing bank by its four-digit code. Mutually exclusive with bankName. |
| bankName | string | Pin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case IBANs from the rare corners of the format. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "grouped" | "compact" | IBAN rendering: grouped or compact. Default grouped. |
| invalid | boolean | Return an IBAN with deliberately wrong check digits, for testing validators. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/pl/ibanResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The IBAN in the requested format. |
| electronicFormat | string | The space-free, 28-character electronic form. |
| bankCode | string | Four-digit bank identifier embedded in the IBAN. |
| bankName | string | Human-readable name of the issuing bank. |
API reference
GET /v1/pl/id-card
Try on playgroundReturns a valid Polish ID card number (numer dowodu osobistego) with a correct checksum and an expiration date (a random day less than ten years ahead). Use `format` to choose between compact (`ABA300000`) and spaced (`ABA 300000`) rendering. Set `invalid=true` to get a number with a deliberately wrong check digit, and `expired=true` to get a past expiration date — both for testing validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case cards from the rare corners of the format. |
| expired | boolean | Return a card whose expiration date is in the past. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "compact" | "with-space" | Number rendering: compact or with a space. Default compact. |
| invalid | boolean | Return a number with a deliberately wrong check digit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/pl/id-cardResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The ID card number in the requested format. |
| series | string | The three uppercase series letters, e.g. "ABA". |
| number | string | The six digits including the leading check digit, e.g. "300000". |
| expirationDate | string | The card expiration date, ISO `YYYY-MM-DD`. Past when `expired=true`. |
API reference
GET /v1/pl/krs
Try on playgroundReturns a realistic synthetic Polish KRS (National Court Register) number, drawn from the plausibly-issued register range. KRS numbers have no public checksum, so there is no validation digit and no `invalid` mode — every value is structurally a genuine KRS. Use `format` to choose between the canonical 10-digit zero-padded rendering and the bare integer.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to the register boundary numbers. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "padded" | "plain" | KRS rendering: padded or plain. Default padded. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/pl/krsResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The KRS in the requested format. |
| number | integer | The underlying sequential register integer. |
API reference
GET /v1/pl/land-register
Try on playgroundReturns a valid Polish land and mortgage register number (numer księgi wieczystej) with a correct check digit. The four-character court department code is genuine, drawn from a curated table of real courts; only the eight-digit register number is synthetic. Use `court` to restrict the draw to a single court (by code, e.g. WA1M, or by a diacritic-sensitive name substring, e.g. Krakowie) — an unknown court is rejected with a 400. Use `format` to choose slashed (CCCC/NNNNNNNN/K) or compact rendering. Set `invalid=true` to get a number with a deliberately wrong check digit, for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| court | string | Restrict to one court department, by four-character code (e.g. WA1M) or name fragment. |
| edge | boolean | Restrict output to edge-case register numbers at the boundaries of the number space. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "with-slashes" | "compact" | Number rendering: with slashes or compact. Default with-slashes. |
| invalid | boolean | Return a number with a deliberately wrong check digit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/pl/land-registerResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The register number in the requested format. |
| courtCode | string | The four-character court department code, e.g. "WA1M". |
| number | string | The eight-digit zero-padded register number, e.g. "00012345". |
| checkDigit | string | The single check digit, e.g. "6". |
| courtoptional | string | Name of the court department the code belongs to. |
API reference
GET /v1/pl/nip
Try on playgroundReturns a valid Polish NIP (tax identifier) with a correct checksum. Use `format` to choose between hyphenated and digits-only rendering. Set `invalid=true` to get a NIP with a deliberately wrong check digit, for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case NIPs from the rare corners. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "with-hyphens" | "digits-only" | NIP rendering: with hyphens or digits only. Default with-hyphens. |
| invalid | boolean | Return a NIP with a deliberately wrong check digit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/pl/nipResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The NIP in the requested format. |
| digits | string | The canonical, unformatted 10-digit NIP. |
API reference
GET /v1/pl/passport
Try on playgroundReturns a valid Polish passport number (numer paszportu) with a correct checksum. Use `format` to choose between compact and space-separated rendering. Set `invalid=true` to get a passport number with a deliberately wrong check digit, for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case passports from the rare corners. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "compact" | "with-space" | Passport-number rendering: compact or with a space. Default compact. |
| invalid | boolean | Return a number with a deliberately wrong check digit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/pl/passportResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The passport number in the requested format. |
| series | string | The two uppercase series letters, e.g. "AA". |
| number | string | The seven digits including the check digit, e.g. "1234567". |
API reference
GET /v1/pl/person
Try on playgroundReturns a mutually consistent synthetic Polish person: given name(s), surname (in the form matching the sex), initials, birth date, and a matching PESEL. Takes the same inputs as `/v1/pl/pesel` — `sex` and any combination of age/birth-date filters (contradictory combinations are rejected with a 400). Set `invalid=true` for a person whose PESEL has a deliberately wrong check digit (birth date and sex stay valid), for testing checksum validators. `edge=true` also makes second given names, double-barrelled surnames, and very short names (`Jan Lis`) far more likely. Set `caseStrict=false` to deliberately mangle the name/surname casing.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| atAge | integer | Exact age in years at request time. |
| bornAfter | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornBefore | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornOn | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD. |
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname (all-lower, all-upper, or random like "kArOl nOwAkOwSki"); initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case values. |
| extreme | boolean | Return a correct person whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials, birthDate, and the national identifier stay clean. |
| invalid | boolean | Return a PESEL with a deliberately wrong check digit; birth date and sex stay valid. |
| olderThan | integer | Minimum age in years at request time. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Encoded sex: "m" or "f". |
| youngerThan | integer | Maximum age in years at request time. |
Request
curl https://api.real-fake-data.com/v1/pl/personResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name, agreeing with the encoded sex. |
| surname | string | Surname in the form matching the sex, e.g. `Kowalski` / `Kowalska`. |
| initials | string | Uppercase initials of name and surname, no dots, e.g. `JK`. |
| birthDate | string | The birth date, ISO `YYYY-MM-DD`. |
| pesel | string | The matching 11-digit PESEL. |
API reference
GET /v1/pl/person-name
Try on playgroundReturns a realistic synthetic Polish person name: given name(s), surname (in the gendered form), and initials. Use `sex` to pin the gendered form (`m`/`f`) or omit it for a random one. `edge=true` biases the name shape — second given names (`Anna Maria`), double-barrelled surnames (`Kowalska-Nowak`), and very short names (`Jan Lis`) become far more likely. Set `caseStrict=false` to deliberately mangle the name/surname casing (initials stay proper uppercase).
Query parameters
| Parameter | Type | Description |
|---|---|---|
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname (all-lower, all-upper, or random like "kArOl nOwAkOwSki"); initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias toward edge-case name shapes (second given names, double surnames, short names). |
| extreme | boolean | Return a correct name whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Gendered form of the name: "m" or "f". Omit for random. |
Request
curl https://api.real-fake-data.com/v1/pl/person-nameResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s), agreeing with the reported sex. |
| surname | string | Surname in the form matching the sex, e.g. `Kowalski` / `Kowalska`. |
| initials | string | Uppercase initials of name and surname, no dots, e.g. `JK`. |
| sex | "m" | "f" | The sex the name was inflected for. |
API reference
GET /v1/pl/pesel
Try on playgroundReturns a valid Polish PESEL with a correct checksum. Constrain the person with `sex` and any combination of age/birth-date filters; contradictory combinations are rejected with a 400. Set `invalid=true` to get a PESEL with a deliberately wrong check digit (birth date and sex stay valid), for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| atAge | integer | Exact age in years at request time. |
| bornAfter | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornBefore | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornOn | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case values. |
| extreme | boolean | Return a correct PESEL whose value is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). The eleven digits stay recoverable after normalisation; birthDate and sex stay clean. |
| invalid | boolean | Return a PESEL with a deliberately wrong check digit; birth date and sex stay valid. |
| olderThan | integer | Minimum age in years at request time. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Encoded sex: "m" or "f". |
| youngerThan | integer | Maximum age in years at request time. |
Request
curl https://api.real-fake-data.com/v1/pl/peselResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The canonical 11-digit PESEL. |
| birthDate | string | The encoded birth date, ISO `YYYY-MM-DD`. |
| sex | "m" | "f" | Encoded sex: `m` (odd) or `f` (even) tenth digit. |
API reference
GET /v1/pl/offering
Try on playgroundReturns a realistic synthetic Polish offering — a product or service with a localized name, a plausible EUR price, its unit, and its industry label. Pin `industry` (NACE code), `type` (product/service), or filter by `industryName`/`offeringName` full text. Set `edge=true` for the price/format corners, `extreme=true` for a hostile-encoded name, or `invalid=true` for a deliberately broken record.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict to edge-case offerings (price-band extremes, unusual units, long names). |
| extreme | boolean | Return a correct offering whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, homoglyphs, or bidi marks). Price, unit and industry label stay clean. |
| industry | "73" | "28.3" | "93.2" | "71" | "90" | "29.3" | "10.7" | "64" | "56.30" | "11" | "30.1" | "47.6" | "26.7" | "95.3" | "56.21" | "23.4" | "81.2" | "14" | "95.1" | "26.2" | "41" | "70" | "26.4" | "49.4" | "10.5" | "74.1" | "85" | "43.2" | "82.3" | "59" | "56.12" | "31" | "92" | "81.3" | "23.1" | "47.1" | "96.2" | "27.5" | "86.1" | "55" | "65" | "32.1" | "96.1" | "15" | "69" | "86.2" | "91.2" | "32.2" | "21" | "74.2" | "58" | "68" | "78" | "43.3" | "77" | "56.11" | "80" | "62" | "10.8" | "93.1" | "32.3" | "61" | "13" | "32.4" | "74.3" | "79" | "75" | "63" | "16" | Pin the industry by NACE code. Omit to draw across all covered industries. |
| industryName | string | Full-text filter: keep offerings whose localized industry label contains this. |
| invalid | boolean | Return a deliberately invalid offering (a price outside its band, a negative price, or an empty name) for negative-path testing. Cannot combine with edge/extreme. |
| language | "pl" | Pin the name language. Omit for the country’s weighted mix. |
| offeringName | string | Full-text filter: keep offerings whose localized name contains this. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "product" | "service" | Restrict to products or services. Omit for both. |
Request
curl https://api.real-fake-data.com/v1/pl/offeringResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The offering name in the resolved language. |
| offeringName | string | The full offering name (alias of `value`). |
| kind | "product" | "service" | Whether it is a good or a rendered service. |
| unit | string | The unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …). |
| price | integer | A single plausible price, in EUR minor units (cents). |
| currency | "EUR" | Currency of `price`; always EUR. |
| industryCode | string | NACE Rev. 2.1 code of the offering’s industry. |
| industryName | string | The localized industry label in the resolved language. |
| language | string | BCP-47 subtag used for this record’s names. |
API reference
GET /v1/pl/regon
Try on playgroundReturns a valid Polish REGON (business registry number) with correct check digit(s). Use `variant` to choose the 9-digit (`short`) or 14-digit (`long`) form, or `any` to pick one at random. Set `invalid=true` to get a REGON with a deliberately wrong check digit (both check digits for a long REGON), for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case REGONs from the rare corners. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| invalid | boolean | Return a REGON with a deliberately wrong check digit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| variant | "short" | "long" | "any" | REGON length: short (9-digit), long (14-digit), or any. |
Request
curl https://api.real-fake-data.com/v1/pl/regonResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The REGON: 9 digits (short) or 14 digits (long). |
| variant | "short" | "long" | Which REGON variant was produced. |
API reference
GET /v1/pl/vehicle-registration
Try on playgroundReturns a realistic Polish vehicle registration plate. `type` selects the kind: `standard` (default, area-coded civilian, e.g. WPI 1A34), `custom` (individual, e.g. P0 KAZIK), `police` (HP PE057), `military` (UC 12345), `historic` (tablica zabytkowa, e.g. BSI 12A — a short five-character number), `motorcycle` (two-row, e.g. WPI 12AC — a real area code with a four-character part), or `short` (reduced-size US/JP import, e.g. W 1A34 — a single voivodeship letter). For standard, historic, and motorcycle plates the area code (wyróżnik) is genuine; narrow it with `voivodeship` and/or `county` — county names repeat across voivodeships, so `county` alone may span several. `custom` and `short` honour `voivodeship` only; `police` and `military` ignore both. An unknown voivodeship, county, or pair is rejected with a 400. Use `format` to choose spaced or compact rendering.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| county | string | Narrow a standard or historic plate to a county (names are not unique across voivodeships). |
| edge | boolean | Restrict output to edge-case plates from the rare corners of the format. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "with-space" | "compact" | Plate rendering: with a space or compact. Default with-space. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "standard" | "custom" | "police" | "military" | "historic" | "motorcycle" | "short" | Plate kind: standard, custom, police, military, historic, motorcycle, or short. |
| voivodeship | string | Narrow a standard, custom, or historic plate to a voivodeship. |
Request
curl https://api.real-fake-data.com/v1/pl/vehicle-registrationResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The plate in the requested format, e.g. "WPI 1A34". |
| prefix | string | Leading code: area wyróżnik (WPI), custom head (P0), or service prefix (HP, UC). |
| individualPart | string | The individual part only, e.g. "1A34", "KAZIK", "12345", "12A". |
| type | "standard" | "custom" | "police" | "military" | "historic" | "motorcycle" | "short" | Which kind of plate this is. |
| voivodeshipoptional | string | Voivodeship the plate belongs to; absent for police/military. |
| countyoptional | string | County or city the area code belongs to; present for standard, historic, and motorcycle plates. |
API reference
GET /v1/pt/cartao-cidadao
Try on playgroundReturns a valid Portuguese Cartão de Cidadão (Citizen Card) document number with correct NIC and final check digits. Set `invalid=true` for a number with a deliberately wrong final check character, or `edge=true` for valid edge cases.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case numbers from the rare corners. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| invalid | boolean | Return a document number with a deliberately wrong final check character. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/pt/cartao-cidadaoResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full 12-character Cartão de Cidadão document number. |
| nic | string | The 8-digit NIC (civil identification number). |
| version | string | The two-character version block, e.g. `ZZ`. |
API reference
GET /v1/pt/company
Try on playgroundReturns a consistent synthetic Portuguese company in one call: a full trading name with its legal form, plus the matching nif. Shape the name with `strategy` and `legalForm` (as on `/v1/pt/company-name`). Set `invalid=true` to corrupt the checksummed identifiers (the name stays intact), for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case values from the rare corners. |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Corrupt the checksummed identifiers, for testing validators. |
| legalForm | "any" | "none" | "Lda." | "S.A." | "Unipessoal Lda." | "SGPS" | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family for the company name. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/pt/companyResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form, or `null` when none was added. |
| nif | string | The matching nif identifier. |
API reference
GET /v1/pt/company-name
Try on playgroundReturns a realistic synthetic Portuguese company name across the naming families (coined, owner-surname, descriptive, modern), with an optional trailing legal form in its authentic local form. Pin `strategy` or `legalForm`, set `legalForm=none` to omit it, or `edge=true` for the punctuation-heavy / long-form corners.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case names (punctuation-heavy families, long/rare forms). |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| legalForm | "any" | "none" | "Lda." | "S.A." | "Unipessoal Lda." | "SGPS" | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/pt/company-nameResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form (e.g. `GmbH`, `S.r.l.`), or `null` when none was added. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Which naming family produced the name. |
API reference
GET /v1/pt/email
Try on playgroundReturns a realistic synthetic Portuguese email address: a name-based local part (romanised to ASCII) on a free webmail, a Portuguese regional provider, or a corporate domain built from a Portuguese company brand. `domain` pins an exact domain; `domainCategory` (`free`/`regional`/`corporate`/`any`) scopes a weighted-random draw. `pattern` selects the local-part shape or `any`. `plusTag` controls plus-addressing; `exotic=true` allows the rarer RFC-valid characters.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| domain | stringpattern ^[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ | Pin an exact domain, e.g. "gmail.com". Overrides domainCategory. |
| domainCategory | "free" | "regional" | "corporate" | "any" | Scope the random domain draw: free webmail, regional providers, corporate domains, or any. |
| edge | boolean | Restrict output to edge-case addresses from the rare corners of the format. |
| exotic | boolean | Allow rarer RFC-valid local-part characters (%, =, ~). Off by default. |
| extreme | boolean | Return a correct address whose value is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). localPart, domain, and the decomposition stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | "any" | Local-part shape, e.g. "first.last"; "any" picks a weighted-random one. |
| plusTag | stringpattern ^[A-Za-z0-9_-]+$ | Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/pt/emailResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full email address, e.g. "anna.schmidt+news@mueller-bau.de". |
| localPart | string | The part before the `@`, including any plus tag. |
| domain | string | The domain, e.g. "gmail.com", "wp.pl", or "mueller-bau.de". |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | Which local-part pattern produced the address. |
| domainCategory | "free" | "regional" | "corporate" | Whether the domain is free, regional, or corporate. |
| company | string | The company name a corporate domain or company local-part was derived from, or `null`. |
| plusTag | string | The plus-addressing tag, or `null` when none. |
API reference
GET /v1/pt/iban
Try on playgroundReturns a valid Portuguese IBAN with a correct checksum. Pin the issuing bank with `bankCode` (4-digit bank code) or `bankName` (mutually exclusive), or let it be chosen at random. Set `invalid=true` to get an IBAN with deliberately wrong check digits, for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| bankCode | string | Pin the issuing bank by its 4-digit bank code. Mutually exclusive with bankName. |
| bankName | string | Pin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case IBANs from the rare corners of the format. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "grouped" | "compact" | IBAN rendering: grouped or compact. Default grouped. |
| invalid | boolean | Return an IBAN with deliberately wrong check digits, for testing validators. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/pt/ibanResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The IBAN in the requested format. |
| electronicFormat | string | The space-free electronic form of the IBAN. |
| bankCode | string | The bank identifier embedded in the IBAN. |
| bankName | string | Human-readable name of the issuing bank. |
API reference
GET /v1/pt/nif
Try on playgroundReturns a valid Portuguese NIF (tax identification number) with a correct mod-11 check digit. Use `entity` to shape a person or company (NIPC) number, `format` for the `PT` VAT form, and `invalid=true` for a NIF with a deliberately wrong check digit.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case NIFs from the rare corners. |
| entity | "person" | "company" | Taxpayer kind: `person` (leading 1–3) or `company`/NIPC (leading 5/6/8/9). |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "national" | "vat" | Rendering: bare 9-digit NIF (default) or the `PT`-prefixed VAT form. |
| invalid | boolean | Return a NIF with a deliberately wrong mod-11 check digit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/pt/nifResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The NIF in the requested format (national or PT VAT). |
| digits | string | The canonical, unprefixed 9-digit NIF. |
| entity | "person" | "company" | Which entity kind the number was shaped for. |
API reference
GET /v1/pt/person
Try on playgroundReturns a synthetic Portuguese person: given name(s), surname, initials, birth date, and the matching Cartão de Cidadão number. Constrain with `sex` and age/birth-date filters (contradictory combinations are rejected with a 400). Set `invalid=true` for a deliberately wrong check value, `edge=true` for rare-corner values, and `caseStrict=false` to mangle the name casing.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| atAge | integer | Exact age in years at request time. |
| bornAfter | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornBefore | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornOn | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD. |
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname; initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias the number and name shape toward their rarely-exercised corners. |
| extreme | boolean | Return a correct person whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials, birthDate, and the national identifier stay clean. |
| invalid | boolean | Return a person whose Cartão de Cidadão number has a deliberately wrong check value. |
| olderThan | integer | Minimum age in years at request time. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Encoded sex: "m" or "f". |
| youngerThan | integer | Maximum age in years at request time. |
Request
curl https://api.real-fake-data.com/v1/pt/personResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s). |
| surname | string | Surname. |
| initials | string | Uppercase initials of name and surname, no dots. |
| birthDate | string | The birth date, ISO `YYYY-MM-DD`. |
| cartaoCidadao | string | The matching Cartão de Cidadão number. |
API reference
GET /v1/pt/person-name
Try on playgroundReturns a realistic synthetic Portuguese person name: given name(s), surname, and initials, in the local script. Use `sex` to pin the gendered form (`m`/`f`) or omit it for a random one. `edge=true` biases the name shape — second given names, double-barrelled surnames, and very short names become far more likely. Set `caseStrict=false` to deliberately mangle the name/surname casing (initials stay proper uppercase).
Query parameters
| Parameter | Type | Description |
|---|---|---|
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname (all-lower, all-upper, or random); initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias toward edge-case name shapes (second given names, double surnames, short names). |
| extreme | boolean | Return a correct name whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Gendered form of the name: "m" or "f". Omit for random. |
Request
curl https://api.real-fake-data.com/v1/pt/person-nameResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s), in the local script, agreeing with the reported sex. |
| surname | string | Surname in the form matching the sex (inflected where the language requires it). |
| initials | string | Uppercase initials of name and surname, no dots, e.g. `JK`. |
| sex | "m" | "f" | The sex the name was inflected for. |
API reference
GET /v1/pt/offering
Try on playgroundReturns a realistic synthetic Portuguese offering — a product or service with a localized name, a plausible EUR price, its unit, and its industry label. Pin `industry` (NACE code), `type` (product/service), or filter by `industryName`/`offeringName` full text. Set `edge=true` for the price/format corners, `extreme=true` for a hostile-encoded name, or `invalid=true` for a broken record.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict to edge-case offerings (price-band extremes, unusual units, long names). |
| extreme | boolean | Return a correct offering whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, homoglyphs, or bidi marks). Price, unit and industry label stay clean. |
| industry | "73" | "28.3" | "93.2" | "71" | "90" | "29.3" | "10.7" | "64" | "56.30" | "11" | "30.1" | "47.6" | "26.7" | "95.3" | "56.21" | "23.4" | "81.2" | "14" | "95.1" | "26.2" | "41" | "70" | "26.4" | "49.4" | "10.5" | "74.1" | "85" | "43.2" | "82.3" | "59" | "56.12" | "31" | "92" | "81.3" | "23.1" | "47.1" | "96.2" | "27.5" | "86.1" | "55" | "65" | "32.1" | "96.1" | "15" | "69" | "86.2" | "91.2" | "32.2" | "21" | "74.2" | "58" | "68" | "78" | "43.3" | "77" | "56.11" | "80" | "62" | "10.8" | "93.1" | "32.3" | "61" | "13" | "32.4" | "74.3" | "79" | "75" | "63" | "16" | Pin the industry by NACE code. Omit to draw across all covered industries. |
| industryName | string | Full-text filter: keep offerings whose localized industry label contains this. |
| invalid | boolean | Return a deliberately invalid offering (a price outside its band, a negative price, or an empty name) for negative-path testing. Cannot combine with edge/extreme. |
| language | "pt" | Pin the name language. Omit for the country’s weighted mix. |
| offeringName | string | Full-text filter: keep offerings whose localized name contains this. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "product" | "service" | Restrict to products or services. Omit for both. |
Request
curl https://api.real-fake-data.com/v1/pt/offeringResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The offering name in the resolved language. |
| offeringName | string | The full offering name (alias of `value`). |
| kind | "product" | "service" | Whether it is a good or a rendered service. |
| unit | string | The unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …). |
| price | integer | A single plausible price, in EUR minor units (cents). |
| currency | "EUR" | Currency of `price`; always EUR. |
| industryCode | string | NACE Rev. 2.1 code of the offering’s industry. |
| industryName | string | The localized industry label in the resolved language. |
| language | string | BCP-47 subtag used for this record’s names. |
API reference
GET /v1/pt/vehicle-registration
Try on playgroundReturns a realistic Portuguese vehicle registration plate. `type` selects the kind: `standard` (default, current `LL-NN-LL`, e.g. AB-14-QT), `motorcycle` (same civilian mask), `military` (MG/ME/MX/AP/AM branch + `NN-NN`), `diplomatic` (CD/CC), `police` (GNR series), or `export` (yellow temporary series). For `standard`/`motorcycle`, `era` picks the mask: `current` (2020+ `LL-NN-LL`), `legacy` (an older still-valid mask), or `both` (mixed per call); the chosen era is echoed in the result. Portugal issues no vanity plates, encodes no region, and no plate carries a checksum. Use `format` to choose hyphen, space, or compact rendering.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case plates from the rare corners of the format. |
| era | "current" | "legacy" | "both" | Civilian registration era: current (2020+ LL-NN-LL), legacy (an older still-valid mask), or both (mixed per call). Applies to standard/motorcycle only. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "with-hyphen" | "with-space" | "compact" | Plate rendering: with a hyphen, with a space, or compact. Default with-hyphen. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "standard" | "motorcycle" | "military" | "diplomatic" | "police" | "export" | Plate kind: standard, motorcycle, military, diplomatic, police, or export. |
Request
curl https://api.real-fake-data.com/v1/pt/vehicle-registrationResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The plate in the requested format, e.g. "AB-14-QT". |
| type | "standard" | "motorcycle" | "military" | "diplomatic" | "police" | "export" | Which kind of plate this is. |
| eraoptional | "current" | "2005-2020" | "1992-2005" | "pre-1992" | The registration era whose mask produced this plate; present only for the civilian standard and motorcycle types. |
API reference
GET /v1/ro/cnp
Try on playgroundReturns a valid Romanian CNP (Cod Numeric Personal) with a correct check digit. Constrain with `sex` and age/birth-date filters (the CNP encodes the full birth date). Contradictory combinations are rejected with a 400. Set `invalid=true` for a deliberately wrong check digit.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| atAge | integer | Exact age in years at request time. |
| bornAfter | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornBefore | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornOn | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case values. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| invalid | boolean | Return a CNP with a deliberately wrong check digit; date/sex/county stay valid. |
| olderThan | integer | Minimum age in years at request time. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Encoded sex: "m" or "f". |
| youngerThan | integer | Maximum age in years at request time. |
Request
curl https://api.real-fake-data.com/v1/ro/cnpResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The CNP in the requested format. |
| digits | string | The canonical 13-digit CNP. |
| birthDate | string | The encoded birth date, ISO `YYYY-MM-DD`. |
| sex | "m" | "f" | Encoded sex: `m` (odd leading digit) or `f` (even). |
| county | string | The 2-digit county code (`JJ`) encoded in the CNP. |
API reference
GET /v1/ro/company
Try on playgroundReturns a consistent synthetic Romanian company in one call: a full trading name with its legal form, plus the matching cui. Shape the name with `strategy` and `legalForm` (as on `/v1/ro/company-name`). Set `invalid=true` to corrupt the checksummed identifiers (the name stays intact), for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case values from the rare corners. |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Corrupt the checksummed identifiers, for testing validators. |
| legalForm | "any" | "none" | "S.R.L." | "S.A." | "S.N.C." | "PFA" | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family for the company name. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/ro/companyResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form, or `null` when none was added. |
| cui | string | The matching cui identifier. |
API reference
GET /v1/ro/company-name
Try on playgroundReturns a realistic synthetic Romanian company name across the naming families (coined, owner-surname, descriptive, modern), with an optional trailing legal form in its authentic local form. Pin `strategy` or `legalForm`, set `legalForm=none` to omit it, or `edge=true` for the punctuation-heavy / long-form corners.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case names (punctuation-heavy families, long/rare forms). |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| legalForm | "any" | "none" | "S.R.L." | "S.A." | "S.N.C." | "PFA" | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/ro/company-nameResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form (e.g. `GmbH`, `S.r.l.`), or `null` when none was added. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Which naming family produced the name. |
API reference
GET /v1/ro/cui
Try on playgroundReturns a valid Romanian CUI/CIF (company identifier) with a correct control digit. Use `format=vat` for the RO VAT number (RO + CUI). Set `invalid=true` for a CUI with a deliberately wrong control digit.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case CUIs from the rare corners. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "national" | "vat" | Rendering: bare national CUI (default) or RO VAT number. |
| invalid | boolean | Return a CUI with a deliberately wrong control digit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/ro/cuiResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The identifier in the requested format (national or VAT). |
| digits | string | The canonical, unprefixed digit string incl. the control digit. |
API reference
GET /v1/ro/email
Try on playgroundReturns a realistic synthetic Romanian email address: a name-based local part (romanised to ASCII) on a free webmail, a Romanian regional provider, or a corporate domain built from a Romanian company brand. `domain` pins an exact domain; `domainCategory` (`free`/`regional`/`corporate`/`any`) scopes a weighted-random draw. `pattern` selects the local-part shape or `any`. `plusTag` controls plus-addressing; `exotic=true` allows the rarer RFC-valid characters.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| domain | stringpattern ^[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ | Pin an exact domain, e.g. "gmail.com". Overrides domainCategory. |
| domainCategory | "free" | "regional" | "corporate" | "any" | Scope the random domain draw: free webmail, regional providers, corporate domains, or any. |
| edge | boolean | Restrict output to edge-case addresses from the rare corners of the format. |
| exotic | boolean | Allow rarer RFC-valid local-part characters (%, =, ~). Off by default. |
| extreme | boolean | Return a correct address whose value is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). localPart, domain, and the decomposition stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | "any" | Local-part shape, e.g. "first.last"; "any" picks a weighted-random one. |
| plusTag | stringpattern ^[A-Za-z0-9_-]+$ | Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/ro/emailResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full email address, e.g. "anna.schmidt+news@mueller-bau.de". |
| localPart | string | The part before the `@`, including any plus tag. |
| domain | string | The domain, e.g. "gmail.com", "wp.pl", or "mueller-bau.de". |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | Which local-part pattern produced the address. |
| domainCategory | "free" | "regional" | "corporate" | Whether the domain is free, regional, or corporate. |
| company | string | The company name a corporate domain or company local-part was derived from, or `null`. |
| plusTag | string | The plus-addressing tag, or `null` when none. |
API reference
GET /v1/ro/iban
Try on playgroundReturns a valid Romanian IBAN with a correct checksum. Pin the issuing bank with `bankCode` (4-letter bank code) or `bankName` (mutually exclusive), or let it be chosen at random. Set `invalid=true` to get an IBAN with deliberately wrong check digits, for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| bankCode | string | Pin the issuing bank by its 4-letter bank code. Mutually exclusive with bankName. |
| bankName | string | Pin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case IBANs from the rare corners of the format. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "grouped" | "compact" | IBAN rendering: grouped or compact. Default grouped. |
| invalid | boolean | Return an IBAN with deliberately wrong check digits, for testing validators. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/ro/ibanResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The IBAN in the requested format. |
| electronicFormat | string | The space-free electronic form of the IBAN. |
| bankCode | string | The bank identifier embedded in the IBAN. |
| bankName | string | Human-readable name of the issuing bank. |
API reference
GET /v1/ro/person
Try on playgroundReturns a synthetic Romanian person: given name(s), surname, initials, birth date, and the matching CNP. Constrain with `sex` and age/birth-date filters (contradictory combinations are rejected with a 400). Set `invalid=true` for a deliberately wrong check value, `edge=true` for rare-corner values, and `caseStrict=false` to mangle the name casing.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| atAge | integer | Exact age in years at request time. |
| bornAfter | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornBefore | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornOn | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD. |
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname; initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias the number and name shape toward their rarely-exercised corners. |
| extreme | boolean | Return a correct person whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials, birthDate, and the national identifier stay clean. |
| invalid | boolean | Return a person whose CNP has a deliberately wrong check value. |
| olderThan | integer | Minimum age in years at request time. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Encoded sex: "m" or "f". |
| youngerThan | integer | Maximum age in years at request time. |
Request
curl https://api.real-fake-data.com/v1/ro/personResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s). |
| surname | string | Surname. |
| initials | string | Uppercase initials of name and surname, no dots. |
| birthDate | string | The birth date, ISO `YYYY-MM-DD`. |
| cnp | string | The matching CNP. |
API reference
GET /v1/ro/person-name
Try on playgroundReturns a realistic synthetic Romanian person name: given name(s), surname, and initials, in the local script. Use `sex` to pin the gendered form (`m`/`f`) or omit it for a random one. `edge=true` biases the name shape — second given names, double-barrelled surnames, and very short names become far more likely. Set `caseStrict=false` to deliberately mangle the name/surname casing (initials stay proper uppercase).
Query parameters
| Parameter | Type | Description |
|---|---|---|
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname (all-lower, all-upper, or random); initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias toward edge-case name shapes (second given names, double surnames, short names). |
| extreme | boolean | Return a correct name whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Gendered form of the name: "m" or "f". Omit for random. |
Request
curl https://api.real-fake-data.com/v1/ro/person-nameResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s), in the local script, agreeing with the reported sex. |
| surname | string | Surname in the form matching the sex (inflected where the language requires it). |
| initials | string | Uppercase initials of name and surname, no dots, e.g. `JK`. |
| sex | "m" | "f" | The sex the name was inflected for. |
API reference
GET /v1/ro/offering
Try on playgroundReturns a realistic synthetic Romanian offering — a product or service with a localized name, a plausible EUR price, its unit, and its industry label. Pin `industry` (NACE code), `type` (product/service), or filter by `industryName`/`offeringName` full text. Set `edge=true` for the price/format corners, `extreme=true` for a hostile-encoded name, or `invalid=true` for a broken record.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict to edge-case offerings (price-band extremes, unusual units, long names). |
| extreme | boolean | Return a correct offering whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, homoglyphs, or bidi marks). Price, unit and industry label stay clean. |
| industry | "73" | "28.3" | "93.2" | "71" | "90" | "29.3" | "10.7" | "64" | "56.30" | "11" | "30.1" | "47.6" | "26.7" | "95.3" | "56.21" | "23.4" | "81.2" | "14" | "95.1" | "26.2" | "41" | "70" | "26.4" | "49.4" | "10.5" | "74.1" | "85" | "43.2" | "82.3" | "59" | "56.12" | "31" | "92" | "81.3" | "23.1" | "47.1" | "96.2" | "27.5" | "86.1" | "55" | "65" | "32.1" | "96.1" | "15" | "69" | "86.2" | "91.2" | "32.2" | "21" | "74.2" | "58" | "68" | "78" | "43.3" | "77" | "56.11" | "80" | "62" | "10.8" | "93.1" | "32.3" | "61" | "13" | "32.4" | "74.3" | "79" | "75" | "63" | "16" | Pin the industry by NACE code. Omit to draw across all covered industries. |
| industryName | string | Full-text filter: keep offerings whose localized industry label contains this. |
| invalid | boolean | Return a deliberately invalid offering (a price outside its band, a negative price, or an empty name) for negative-path testing. Cannot combine with edge/extreme. |
| language | "ro" | Pin the name language. Omit for the country’s weighted mix. |
| offeringName | string | Full-text filter: keep offerings whose localized name contains this. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "product" | "service" | Restrict to products or services. Omit for both. |
Request
curl https://api.real-fake-data.com/v1/ro/offeringResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The offering name in the resolved language. |
| offeringName | string | The full offering name (alias of `value`). |
| kind | "product" | "service" | Whether it is a good or a rendered service. |
| unit | string | The unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …). |
| price | integer | A single plausible price, in EUR minor units (cents). |
| currency | "EUR" | Currency of `price`; always EUR. |
| industryCode | string | NACE Rev. 2.1 code of the offering’s industry. |
| industryName | string | The localized industry label in the resolved language. |
| language | string | BCP-47 subtag used for this record’s names. |
API reference
GET /v1/ro/vehicle-registration
Try on playgroundReturns a realistic Romanian vehicle registration plate. `type` selects the kind: `standard` (default, county `LL NN LLL`, e.g. CJ 07 ABD, with the special `B NN LLL` / `B NNN LLL` for Bucharest), `motorcycle` and `electric` (same county mask), `temporary` (provisional plate with a `0`-led number block), `military` (`A NNNNN`), `police` (`MAI NNNNN`), or `diplomatic` (`CD/TC/CO NNN NNN`). A county-coded plate can be pinned to one county via `county` (case-insensitive name; an unknown name is a 400); the service classes carry no county code and ignore it. Romanian plates carry no checksum, so there is no `invalid` variant. Use `format` to choose spaced or compact rendering.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| county | string | Restrict a county-coded plate to one county by name (e.g. Cluj, București). Ignored by military/police/diplomatic plates. An unknown county is a 400. |
| edge | boolean | Restrict output to edge-case plates from the rare corners of the format. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "with-space" | "compact" | Plate rendering: with a space or compact. Default with-space. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "standard" | "motorcycle" | "electric" | "temporary" | "military" | "police" | "diplomatic" | Plate kind: standard, motorcycle, electric, temporary, military, police, or diplomatic. |
Request
curl https://api.real-fake-data.com/v1/ro/vehicle-registrationResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The plate in the requested format, e.g. "CJ 07 ABD". |
| type | "standard" | "motorcycle" | "electric" | "temporary" | "military" | "police" | "diplomatic" | Which kind of plate this is. |
| countyoptional | string | The county the plate belongs to (e.g. Cluj, București); present only for county-coded classes. |
| countyCodeoptional | string | The county registration code at the head of the plate (e.g. CJ, TM, B); present exactly when county is. |
API reference
GET /v1/sk/company
Try on playgroundReturns a consistent synthetic Slovak company in one call: a full trading name with its legal form, plus the matching ico, icDph. Shape the name with `strategy` and `legalForm` (as on `/v1/sk/company-name`). Set `invalid=true` to corrupt the checksummed identifiers (the name stays intact), for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case values from the rare corners. |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Corrupt the checksummed identifiers, for testing validators. |
| legalForm | "any" | "none" | "s.r.o." | "a.s." | "v.o.s." | "k.s." | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family for the company name. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/sk/companyResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form, or `null` when none was added. |
| ico | string | The matching ico identifier. |
| icDph | string | The matching ic-dph identifier. |
API reference
GET /v1/sk/company-name
Try on playgroundReturns a realistic synthetic Slovak company name across the naming families (coined, owner-surname, descriptive, modern), with an optional trailing legal form in its authentic local form. Pin `strategy` or `legalForm`, set `legalForm=none` to omit it, or `edge=true` for the punctuation-heavy / long-form corners.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case names (punctuation-heavy families, long/rare forms). |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| legalForm | "any" | "none" | "s.r.o." | "a.s." | "v.o.s." | "k.s." | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/sk/company-nameResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form (e.g. `GmbH`, `S.r.l.`), or `null` when none was added. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Which naming family produced the name. |
API reference
GET /v1/sk/email
Try on playgroundReturns a realistic synthetic Slovak email address: a name-based local part (romanised to ASCII) on a free webmail, a Slovak regional provider, or a corporate domain built from a Slovak company brand. `domain` pins an exact domain; `domainCategory` (`free`/`regional`/`corporate`/`any`) scopes a weighted-random draw. `pattern` selects the local-part shape or `any`. `plusTag` controls plus-addressing; `exotic=true` allows the rarer RFC-valid characters.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| domain | stringpattern ^[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ | Pin an exact domain, e.g. "gmail.com". Overrides domainCategory. |
| domainCategory | "free" | "regional" | "corporate" | "any" | Scope the random domain draw: free webmail, regional providers, corporate domains, or any. |
| edge | boolean | Restrict output to edge-case addresses from the rare corners of the format. |
| exotic | boolean | Allow rarer RFC-valid local-part characters (%, =, ~). Off by default. |
| extreme | boolean | Return a correct address whose value is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). localPart, domain, and the decomposition stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | "any" | Local-part shape, e.g. "first.last"; "any" picks a weighted-random one. |
| plusTag | stringpattern ^[A-Za-z0-9_-]+$ | Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/sk/emailResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full email address, e.g. "anna.schmidt+news@mueller-bau.de". |
| localPart | string | The part before the `@`, including any plus tag. |
| domain | string | The domain, e.g. "gmail.com", "wp.pl", or "mueller-bau.de". |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | Which local-part pattern produced the address. |
| domainCategory | "free" | "regional" | "corporate" | Whether the domain is free, regional, or corporate. |
| company | string | The company name a corporate domain or company local-part was derived from, or `null`. |
| plusTag | string | The plus-addressing tag, or `null` when none. |
API reference
GET /v1/sk/iban
Try on playgroundReturns a valid Slovak IBAN with a correct checksum. Pin the issuing bank with `bankCode` (4-digit bank code) or `bankName` (mutually exclusive), or let it be chosen at random. Set `invalid=true` to get an IBAN with deliberately wrong check digits, for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| bankCode | string | Pin the issuing bank by its 4-digit bank code. Mutually exclusive with bankName. |
| bankName | string | Pin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case IBANs from the rare corners of the format. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "grouped" | "compact" | IBAN rendering: grouped or compact. Default grouped. |
| invalid | boolean | Return an IBAN with deliberately wrong check digits, for testing validators. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/sk/ibanResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The IBAN in the requested format. |
| electronicFormat | string | The space-free electronic form of the IBAN. |
| bankCode | string | The bank identifier embedded in the IBAN. |
| bankName | string | Human-readable name of the issuing bank. |
API reference
GET /v1/sk/ic-dph
Try on playgroundReturns a valid Slovak IČ DPH (VAT identification number) — 10 digits divisible by 11 with the scheme positional constraints. Use `format` for the `SK`-prefixed VAT form. Set `invalid=true` for a deliberately wrong check.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case numbers from the boundaries. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "national" | "vat" | Rendering: bare 10-digit number (default) or `SK`-prefixed VAT form. |
| invalid | boolean | Return a number with a deliberately wrong divisible-by-11 check. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/sk/ic-dphResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The number in the requested format (national or `SK`-prefixed VAT). |
| digits | string | The canonical, unprefixed 10-digit number. |
API reference
GET /v1/sk/ico
Try on playgroundReturns a valid Slovak IČO (identifikačné číslo organizácie) with a correct mod-11 check digit. Set `invalid=true` for an IČO with a deliberately wrong check digit, or `edge=true` for valid edge cases.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case IČOs from the rare corners. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| invalid | boolean | Return an IČO with a deliberately wrong mod-11 check digit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/sk/icoResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The 8-digit IČO. |
| digits | string | The canonical 8-digit IČO. |
API reference
GET /v1/sk/person
Try on playgroundReturns a synthetic Slovak person: given name(s), surname, initials, birth date, and the matching rodné číslo. Constrain with `sex` and age/birth-date filters (contradictory combinations are rejected with a 400). Set `invalid=true` for a deliberately wrong check value, `edge=true` for rare-corner values, and `caseStrict=false` to mangle the name casing.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| atAge | integer | Exact age in years at request time. |
| bornAfter | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornBefore | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornOn | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD. |
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname; initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias the number and name shape toward their rarely-exercised corners. |
| extreme | boolean | Return a correct person whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials, birthDate, and the national identifier stay clean. |
| invalid | boolean | Return a person whose rodné číslo has a deliberately wrong check value. |
| olderThan | integer | Minimum age in years at request time. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Encoded sex: "m" or "f". |
| youngerThan | integer | Maximum age in years at request time. |
Request
curl https://api.real-fake-data.com/v1/sk/personResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s). |
| surname | string | Surname. |
| initials | string | Uppercase initials of name and surname, no dots. |
| birthDate | string | The birth date, ISO `YYYY-MM-DD`. |
| rodneCislo | string | The matching rodné číslo. |
API reference
GET /v1/sk/person-name
Try on playgroundReturns a realistic synthetic Slovak person name: given name(s), surname, and initials, in the local script. Use `sex` to pin the gendered form (`m`/`f`) or omit it for a random one. `edge=true` biases the name shape — second given names, double-barrelled surnames, and very short names become far more likely. Set `caseStrict=false` to deliberately mangle the name/surname casing (initials stay proper uppercase).
Query parameters
| Parameter | Type | Description |
|---|---|---|
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname (all-lower, all-upper, or random); initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias toward edge-case name shapes (second given names, double surnames, short names). |
| extreme | boolean | Return a correct name whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Gendered form of the name: "m" or "f". Omit for random. |
Request
curl https://api.real-fake-data.com/v1/sk/person-nameResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s), in the local script, agreeing with the reported sex. |
| surname | string | Surname in the form matching the sex (inflected where the language requires it). |
| initials | string | Uppercase initials of name and surname, no dots, e.g. `JK`. |
| sex | "m" | "f" | The sex the name was inflected for. |
API reference
GET /v1/sk/offering
Try on playgroundReturns a realistic synthetic Slovak offering — a product or service with a localized name, a plausible EUR price, its unit, and its industry label. Pin `industry` (NACE code), `type` (product/service), or filter by `industryName`/`offeringName` full text. Set `edge=true` for the price/format corners, `extreme=true` for a hostile-encoded name, or `invalid=true` for a broken record.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict to edge-case offerings (price-band extremes, unusual units, long names). |
| extreme | boolean | Return a correct offering whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, homoglyphs, or bidi marks). Price, unit and industry label stay clean. |
| industry | "73" | "28.3" | "93.2" | "71" | "90" | "29.3" | "10.7" | "64" | "56.30" | "11" | "30.1" | "47.6" | "26.7" | "95.3" | "56.21" | "23.4" | "81.2" | "14" | "95.1" | "26.2" | "41" | "70" | "26.4" | "49.4" | "10.5" | "74.1" | "85" | "43.2" | "82.3" | "59" | "56.12" | "31" | "92" | "81.3" | "23.1" | "47.1" | "96.2" | "27.5" | "86.1" | "55" | "65" | "32.1" | "96.1" | "15" | "69" | "86.2" | "91.2" | "32.2" | "21" | "74.2" | "58" | "68" | "78" | "43.3" | "77" | "56.11" | "80" | "62" | "10.8" | "93.1" | "32.3" | "61" | "13" | "32.4" | "74.3" | "79" | "75" | "63" | "16" | Pin the industry by NACE code. Omit to draw across all covered industries. |
| industryName | string | Full-text filter: keep offerings whose localized industry label contains this. |
| invalid | boolean | Return a deliberately invalid offering (a price outside its band, a negative price, or an empty name) for negative-path testing. Cannot combine with edge/extreme. |
| language | "sk" | Pin the name language. Omit for the country’s weighted mix. |
| offeringName | string | Full-text filter: keep offerings whose localized name contains this. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "product" | "service" | Restrict to products or services. Omit for both. |
Request
curl https://api.real-fake-data.com/v1/sk/offeringResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The offering name in the resolved language. |
| offeringName | string | The full offering name (alias of `value`). |
| kind | "product" | "service" | Whether it is a good or a rendered service. |
| unit | string | The unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …). |
| price | integer | A single plausible price, in EUR minor units (cents). |
| currency | "EUR" | Currency of `price`; always EUR. |
| industryCode | string | NACE Rev. 2.1 code of the offering’s industry. |
| industryName | string | The localized industry label in the resolved language. |
| language | string | BCP-47 subtag used for this record’s names. |
API reference
GET /v1/sk/rodne-cislo
Try on playgroundReturns a valid Slovak rodné číslo with a correct divisible-by-11 check. Constrain with `sex` and age/birth-date filters (the full birth date is encoded). Contradictory combinations are rejected with a 400. Use `format` for the `YYMMDD/SSSC` rendering. Set `invalid=true` for a deliberately wrong check digit.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| atAge | integer | Exact age in years at request time. |
| bornAfter | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornBefore | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornOn | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case values. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "plain" | "with-slash" | Rendering: bare 10 digits (default) or `YYMMDD/SSSC`. |
| invalid | boolean | Return a number with a deliberately wrong check; date/sex stay valid. |
| olderThan | integer | Minimum age in years at request time. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Encoded sex: "m" or "f". |
| youngerThan | integer | Maximum age in years at request time. |
Request
curl https://api.real-fake-data.com/v1/sk/rodne-cisloResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The number in the requested format (plain or `YYMMDD/SSSC`). |
| digits | string | The canonical 10-digit number. |
| birthDate | string | The encoded birth date, ISO `YYYY-MM-DD`. |
| sex | "m" | "f" | Encoded sex: `m` (month 01–12) or `f` (month 51–62). |
API reference
GET /v1/sk/vehicle-registration
Try on playgroundReturns a realistic Slovak vehicle registration plate. `type` selects the kind: `standard` (default, `LL-NNN-LL`, e.g. BA-123-AB), `motorcycle` (same mask), `military` (`NN-NNNNN`), `diplomatic` (`EE-NNNNN`), `consular` (`ZZ-NNNNN`), `trailer` (fixed `Y` serial), `historic` (`H` marker), `electric` (`EL-NNN-LL`), `dealer` (`M` marker), or `custom` (free-form vanity). For a district-coded type, `era` picks the scheme: `current` (2023+ nationwide-random, no region) or `legacy` (1997–2022 district-coded, so the result carries `region`/`district`), or `both`. `district`/`region` restrict a legacy code to a named okres/kraj (an unknown name is a 400). Slovakia issues no checksum, so there is no `invalid` variant. Use `format` to choose hyphenated or compact rendering.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| district | string | Restrict a legacy/both plate to a named district (okres), e.g. Košice. Unknown names are a 400. |
| edge | boolean | Restrict output to edge-case plates from the rare corners of the format. |
| era | "current" | "legacy" | "both" | Which scheme shapes the leading pair of a district-coded plate: current (2023+, no region), legacy (1997–2022, district-coded), or both. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "hyphen" | "compact" | Plate rendering: hyphenated or compact. Default hyphen. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| region | string | Restrict a legacy/both plate to a named region (kraj), e.g. Bratislavský. Unknown names are a 400. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "standard" | "motorcycle" | "military" | "diplomatic" | "consular" | "trailer" | "historic" | "electric" | "dealer" | "custom" | Plate kind: standard, motorcycle, military, diplomatic, consular, trailer, historic, electric, dealer, or custom. |
Request
curl https://api.real-fake-data.com/v1/sk/vehicle-registrationResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The plate in the requested format, e.g. "BA-123-AB". |
| type | "standard" | "motorcycle" | "military" | "diplomatic" | "consular" | "trailer" | "historic" | "electric" | "dealer" | "custom" | Which kind of plate this is. |
| regionoptional | string | The genuine region (kraj) of the plate's district code; present only for a legacy district-coded plate. |
| districtoptional | string | The genuine district (okres) that issued the plate's leading code; present under the same conditions as region. |
API reference
GET /v1/si/company
Try on playgroundReturns a consistent synthetic Slovenian company in one call: a full trading name with its legal form, plus the matching davcnaStevilka. Shape the name with `strategy` and `legalForm` (as on `/v1/si/company-name`). Set `invalid=true` to corrupt the checksummed identifiers (the name stays intact), for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case values from the rare corners. |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Corrupt the checksummed identifiers, for testing validators. |
| legalForm | "any" | "none" | "d.o.o." | "d.d." | "s.p." | "k.d." | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family for the company name. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/si/companyResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form, or `null` when none was added. |
| davcnaStevilka | string | The matching davcna-stevilka identifier. |
API reference
GET /v1/si/company-name
Try on playgroundReturns a realistic synthetic Slovenian company name across the naming families (coined, owner-surname, descriptive, modern), with an optional trailing legal form in its authentic local form. Pin `strategy` or `legalForm`, set `legalForm=none` to omit it, or `edge=true` for the punctuation-heavy / long-form corners.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case names (punctuation-heavy families, long/rare forms). |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| legalForm | "any" | "none" | "d.o.o." | "d.d." | "s.p." | "k.d." | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/si/company-nameResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form (e.g. `GmbH`, `S.r.l.`), or `null` when none was added. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Which naming family produced the name. |
API reference
GET /v1/si/davcna-stevilka
Try on playgroundReturns a valid Slovenian davčna številka (tax number for a person or company) with a correct check digit. Use `format=vat` for the SI VAT number. Set `invalid=true` for a tax number with a deliberately wrong check digit.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case tax numbers from the rare corners. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "national" | "vat" | Rendering: bare 8-digit national tax number (default) or SI VAT number. |
| invalid | boolean | Return a tax number with a deliberately wrong check digit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/si/davcna-stevilkaResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The tax number in the requested format (national or VAT). |
| digits | string | The canonical, unprefixed 8-digit tax number. |
API reference
GET /v1/si/email
Try on playgroundReturns a realistic synthetic Slovenian email address: a name-based local part (romanised to ASCII) on a free webmail, a Slovenian regional provider, or a corporate domain built from a Slovenian company brand. `domain` pins an exact domain; `domainCategory` (`free`/`regional`/`corporate`/`any`) scopes a weighted-random draw. `pattern` selects the local-part shape or `any`. `plusTag` controls plus-addressing; `exotic=true` allows the rarer RFC-valid characters.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| domain | stringpattern ^[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ | Pin an exact domain, e.g. "gmail.com". Overrides domainCategory. |
| domainCategory | "free" | "regional" | "corporate" | "any" | Scope the random domain draw: free webmail, regional providers, corporate domains, or any. |
| edge | boolean | Restrict output to edge-case addresses from the rare corners of the format. |
| exotic | boolean | Allow rarer RFC-valid local-part characters (%, =, ~). Off by default. |
| extreme | boolean | Return a correct address whose value is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). localPart, domain, and the decomposition stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | "any" | Local-part shape, e.g. "first.last"; "any" picks a weighted-random one. |
| plusTag | stringpattern ^[A-Za-z0-9_-]+$ | Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/si/emailResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full email address, e.g. "anna.schmidt+news@mueller-bau.de". |
| localPart | string | The part before the `@`, including any plus tag. |
| domain | string | The domain, e.g. "gmail.com", "wp.pl", or "mueller-bau.de". |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | Which local-part pattern produced the address. |
| domainCategory | "free" | "regional" | "corporate" | Whether the domain is free, regional, or corporate. |
| company | string | The company name a corporate domain or company local-part was derived from, or `null`. |
| plusTag | string | The plus-addressing tag, or `null` when none. |
API reference
GET /v1/si/emso
Try on playgroundReturns a valid Slovenian EMŠO (Enotna matična številka občana) with a correct mod-11 check digit. Constrain with `sex` and age/birth-date filters (the full birth date is encoded). Contradictory combinations are rejected with a 400. Set `invalid=true` for a deliberately wrong check digit.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| atAge | integer | Exact age in years at request time. |
| bornAfter | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornBefore | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornOn | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case values. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| invalid | boolean | Return an EMŠO with a deliberately wrong check digit; date/sex stay valid. |
| olderThan | integer | Minimum age in years at request time. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Encoded sex: "m" or "f". |
| youngerThan | integer | Maximum age in years at request time. |
Request
curl https://api.real-fake-data.com/v1/si/emsoResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The EMŠO rendered as the bare 13 digits. |
| digits | string | The canonical 13-digit EMŠO. |
| birthDate | string | The encoded birth date, ISO `YYYY-MM-DD`. |
| sex | "m" | "f" | Encoded sex: `m` (serial 000–499) or `f` (serial 500–999). |
API reference
GET /v1/si/iban
Try on playgroundReturns a valid Slovenian IBAN with a correct checksum. Pin the issuing bank with `bankCode` (2-digit bank code) or `bankName` (mutually exclusive), or let it be chosen at random. Set `invalid=true` to get an IBAN with deliberately wrong check digits, for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| bankCode | string | Pin the issuing bank by its 2-digit bank code. Mutually exclusive with bankName. |
| bankName | string | Pin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case IBANs from the rare corners of the format. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "grouped" | "compact" | IBAN rendering: grouped or compact. Default grouped. |
| invalid | boolean | Return an IBAN with deliberately wrong check digits, for testing validators. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/si/ibanResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The IBAN in the requested format. |
| electronicFormat | string | The space-free electronic form of the IBAN. |
| bankCode | string | The bank identifier embedded in the IBAN. |
| bankName | string | Human-readable name of the issuing bank. |
API reference
GET /v1/si/person
Try on playgroundReturns a synthetic Slovenian person: given name(s), surname, initials, birth date, and the matching EMŠO. Constrain with `sex` and age/birth-date filters (contradictory combinations are rejected with a 400). Set `invalid=true` for a deliberately wrong check value, `edge=true` for rare-corner values, and `caseStrict=false` to mangle the name casing.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| atAge | integer | Exact age in years at request time. |
| bornAfter | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornBefore | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornOn | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD. |
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname; initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias the number and name shape toward their rarely-exercised corners. |
| extreme | boolean | Return a correct person whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials, birthDate, and the national identifier stay clean. |
| invalid | boolean | Return a person whose EMŠO has a deliberately wrong check value. |
| olderThan | integer | Minimum age in years at request time. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Encoded sex: "m" or "f". |
| youngerThan | integer | Maximum age in years at request time. |
Request
curl https://api.real-fake-data.com/v1/si/personResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s). |
| surname | string | Surname. |
| initials | string | Uppercase initials of name and surname, no dots. |
| birthDate | string | The birth date, ISO `YYYY-MM-DD`. |
| emso | string | The matching EMŠO. |
API reference
GET /v1/si/person-name
Try on playgroundReturns a realistic synthetic Slovenian person name: given name(s), surname, and initials, in the local script. Use `sex` to pin the gendered form (`m`/`f`) or omit it for a random one. `edge=true` biases the name shape — second given names, double-barrelled surnames, and very short names become far more likely. Set `caseStrict=false` to deliberately mangle the name/surname casing (initials stay proper uppercase).
Query parameters
| Parameter | Type | Description |
|---|---|---|
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname (all-lower, all-upper, or random); initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias toward edge-case name shapes (second given names, double surnames, short names). |
| extreme | boolean | Return a correct name whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Gendered form of the name: "m" or "f". Omit for random. |
Request
curl https://api.real-fake-data.com/v1/si/person-nameResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s), in the local script, agreeing with the reported sex. |
| surname | string | Surname in the form matching the sex (inflected where the language requires it). |
| initials | string | Uppercase initials of name and surname, no dots, e.g. `JK`. |
| sex | "m" | "f" | The sex the name was inflected for. |
API reference
GET /v1/si/offering
Try on playgroundReturns a realistic synthetic Slovenian offering — a product or service with a localized name, a plausible EUR price, its unit, and its industry label. Pin `industry` (NACE code), `type` (product/service), or filter by `industryName`/`offeringName` full text. Set `edge=true` for the price/format corners, `extreme=true` for a hostile-encoded name, or `invalid=true` for a broken record.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict to edge-case offerings (price-band extremes, unusual units, long names). |
| extreme | boolean | Return a correct offering whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, homoglyphs, or bidi marks). Price, unit and industry label stay clean. |
| industry | "73" | "28.3" | "93.2" | "71" | "90" | "29.3" | "10.7" | "64" | "56.30" | "11" | "30.1" | "47.6" | "26.7" | "95.3" | "56.21" | "23.4" | "81.2" | "14" | "95.1" | "26.2" | "41" | "70" | "26.4" | "49.4" | "10.5" | "74.1" | "85" | "43.2" | "82.3" | "59" | "56.12" | "31" | "92" | "81.3" | "23.1" | "47.1" | "96.2" | "27.5" | "86.1" | "55" | "65" | "32.1" | "96.1" | "15" | "69" | "86.2" | "91.2" | "32.2" | "21" | "74.2" | "58" | "68" | "78" | "43.3" | "77" | "56.11" | "80" | "62" | "10.8" | "93.1" | "32.3" | "61" | "13" | "32.4" | "74.3" | "79" | "75" | "63" | "16" | Pin the industry by NACE code. Omit to draw across all covered industries. |
| industryName | string | Full-text filter: keep offerings whose localized industry label contains this. |
| invalid | boolean | Return a deliberately invalid offering (a price outside its band, a negative price, or an empty name) for negative-path testing. Cannot combine with edge/extreme. |
| language | "sl" | Pin the name language. Omit for the country’s weighted mix. |
| offeringName | string | Full-text filter: keep offerings whose localized name contains this. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "product" | "service" | Restrict to products or services. Omit for both. |
Request
curl https://api.real-fake-data.com/v1/si/offeringResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The offering name in the resolved language. |
| offeringName | string | The full offering name (alias of `value`). |
| kind | "product" | "service" | Whether it is a good or a rendered service. |
| unit | string | The unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …). |
| price | integer | A single plausible price, in EUR minor units (cents). |
| currency | "EUR" | Currency of `price`; always EUR. |
| industryCode | string | NACE Rev. 2.1 code of the offering’s industry. |
| industryName | string | The localized industry label in the resolved language. |
| language | string | BCP-47 subtag used for this record’s names. |
API reference
GET /v1/si/vehicle-registration
Try on playgroundReturns a realistic Slovenian vehicle registration plate. `type` selects the kind: `standard` (default, region code + `LL-NNN`, e.g. LJ AB-123), `custom` (region-prefixed vanity group), `motorcycle` (region code + `LL-NN`), `military` (`SV NNNNN`), `diplomatic` (`CD NN-NNN`), `police` (`P NNNNN`), or `export` (region code + `ES-NNN`). Constrain a region-coded plate to a registration region with `region` (named by office seat, e.g. Ljubljana; an unknown name is a 400). The cosmetic `SLO` country marker is not part of the value and no plate carries a checksum. Use `format` to choose spaced or compact rendering.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case plates from the rare corners of the format. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "with-space" | "compact" | Plate rendering: with a space or compact. Default with-space. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| region | string | Restrict a region-coded plate to a registration region by office seat (e.g. Ljubljana, Maribor, Koper). An unknown name is a 400; ignored for military/diplomatic/police. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "standard" | "custom" | "motorcycle" | "military" | "diplomatic" | "police" | "export" | Plate kind: standard, custom, motorcycle, military, diplomatic, police, or export. |
Request
curl https://api.real-fake-data.com/v1/si/vehicle-registrationResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The plate in the requested format, e.g. "LJ AB-123" or "LJAB123". |
| type | "standard" | "custom" | "motorcycle" | "military" | "diplomatic" | "police" | "export" | Which kind of plate this is. |
| regionoptional | string | The office seat of the two-letter region code (e.g. Ljubljana for LJ); present only for the region-coded types. |
API reference
GET /v1/es/cif
Try on playgroundReturns a valid Spanish CIF (tax id for legal entities) with a correct control character. Use `format=vat` for the `ES`-prefixed VAT number. Set `invalid=true` for a CIF with a deliberately wrong control character.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case CIFs from the rare corners. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "national" | "vat" | Rendering: bare national CIF (default) or ES VAT number. |
| invalid | boolean | Return a CIF with a deliberately wrong control character. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/es/cifResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The CIF in the requested format (national or ES VAT). |
| digits | string | The canonical national CIF (letter + 7 digits + control). |
API reference
GET /v1/es/company
Try on playgroundReturns a consistent synthetic Spanish company in one call: a full trading name with its legal form, plus the matching cif. Shape the name with `strategy` and `legalForm` (as on `/v1/es/company-name`). Set `invalid=true` to corrupt the checksummed identifiers (the name stays intact), for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case values from the rare corners. |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Corrupt the checksummed identifiers, for testing validators. |
| legalForm | "any" | "none" | "S.L." | "S.A." | "S.L.U." | "S.C." | "S.Coop." | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family for the company name. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/es/companyResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form, or `null` when none was added. |
| cif | string | The matching cif identifier. |
API reference
GET /v1/es/company-name
Try on playgroundReturns a realistic synthetic Spanish company name across the naming families (coined, owner-surname, descriptive, modern), with an optional trailing legal form in its authentic local form. Pin `strategy` or `legalForm`, set `legalForm=none` to omit it, or `edge=true` for the punctuation-heavy / long-form corners.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case names (punctuation-heavy families, long/rare forms). |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| legalForm | "any" | "none" | "S.L." | "S.A." | "S.L.U." | "S.C." | "S.Coop." | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/es/company-nameResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form (e.g. `GmbH`, `S.r.l.`), or `null` when none was added. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Which naming family produced the name. |
API reference
GET /v1/es/dni
Try on playgroundReturns a valid Spanish DNI (national identity / tax number) with a correct control letter computed from the 8 digits modulo 23. Set `invalid=true` for a DNI with a deliberately wrong control letter.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case DNIs from the rare corners. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| invalid | boolean | Return a DNI with a deliberately wrong control letter. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/es/dniResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full DNI: 8 digits followed by the control letter. |
| digits | string | The canonical 8-digit body, leading zeros preserved. |
| letter | string | The single control letter from `TRWAGMYFPDXBNJZSQVHLCKE`. |
API reference
GET /v1/es/email
Try on playgroundReturns a realistic synthetic Spanish email address: a name-based local part (romanised to ASCII) on a free webmail, a Spanish regional provider, or a corporate domain built from a Spanish company brand. `domain` pins an exact domain; `domainCategory` (`free`/`regional`/`corporate`/`any`) scopes a weighted-random draw. `pattern` selects the local-part shape or `any`. `plusTag` controls plus-addressing; `exotic=true` allows the rarer RFC-valid characters.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| domain | stringpattern ^[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ | Pin an exact domain, e.g. "gmail.com". Overrides domainCategory. |
| domainCategory | "free" | "regional" | "corporate" | "any" | Scope the random domain draw: free webmail, regional providers, corporate domains, or any. |
| edge | boolean | Restrict output to edge-case addresses from the rare corners of the format. |
| exotic | boolean | Allow rarer RFC-valid local-part characters (%, =, ~). Off by default. |
| extreme | boolean | Return a correct address whose value is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). localPart, domain, and the decomposition stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | "any" | Local-part shape, e.g. "first.last"; "any" picks a weighted-random one. |
| plusTag | stringpattern ^[A-Za-z0-9_-]+$ | Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/es/emailResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full email address, e.g. "anna.schmidt+news@mueller-bau.de". |
| localPart | string | The part before the `@`, including any plus tag. |
| domain | string | The domain, e.g. "gmail.com", "wp.pl", or "mueller-bau.de". |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | Which local-part pattern produced the address. |
| domainCategory | "free" | "regional" | "corporate" | Whether the domain is free, regional, or corporate. |
| company | string | The company name a corporate domain or company local-part was derived from, or `null`. |
| plusTag | string | The plus-addressing tag, or `null` when none. |
API reference
GET /v1/es/iban
Try on playgroundReturns a valid Spanish IBAN with a correct checksum. Pin the issuing bank with `bankCode` (4-digit entidad code) or `bankName` (mutually exclusive), or let it be chosen at random. Set `invalid=true` to get an IBAN with deliberately wrong check digits, for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| bankCode | string | Pin the issuing bank by its 4-digit entidad code. Mutually exclusive with bankName. |
| bankName | string | Pin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case IBANs from the rare corners of the format. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "grouped" | "compact" | IBAN rendering: grouped or compact. Default grouped. |
| invalid | boolean | Return an IBAN with deliberately wrong check digits, for testing validators. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/es/ibanResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The IBAN in the requested format. |
| electronicFormat | string | The space-free electronic form of the IBAN. |
| bankCode | string | The bank identifier embedded in the IBAN. |
| bankName | string | Human-readable name of the issuing bank. |
API reference
GET /v1/es/nie
Try on playgroundReturns a valid Spanish NIE (foreigner identity number): an `X`/`Y`/`Z` prefix, 7 digits, and a correct control letter. Set `invalid=true` for a NIE with a deliberately wrong control letter.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case NIEs from the rare corners. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| invalid | boolean | Return a NIE with a deliberately wrong control letter. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/es/nieResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full NIE: prefix + 7 digits + control letter. |
| prefix | string | The prefix letter, one of `X`, `Y`, `Z`. |
| digits | string | The 7-digit body, leading zeros preserved. |
| letter | string | The single control letter from `TRWAGMYFPDXBNJZSQVHLCKE`. |
API reference
GET /v1/es/person
Try on playgroundReturns a synthetic Spanish person: given name(s), surname, initials, birth date, and the matching DNI. Constrain with `sex` and age/birth-date filters (contradictory combinations are rejected with a 400). Set `invalid=true` for a deliberately wrong check value, `edge=true` for rare-corner values, and `caseStrict=false` to mangle the name casing.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| atAge | integer | Exact age in years at request time. |
| bornAfter | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornBefore | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornOn | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD. |
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname; initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias the number and name shape toward their rarely-exercised corners. |
| extreme | boolean | Return a correct person whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials, birthDate, and the national identifier stay clean. |
| invalid | boolean | Return a person whose DNI has a deliberately wrong check value. |
| olderThan | integer | Minimum age in years at request time. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Encoded sex: "m" or "f". |
| youngerThan | integer | Maximum age in years at request time. |
Request
curl https://api.real-fake-data.com/v1/es/personResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s). |
| surname | string | Surname. |
| initials | string | Uppercase initials of name and surname, no dots. |
| birthDate | string | The birth date, ISO `YYYY-MM-DD`. |
| dni | string | The matching DNI. |
API reference
GET /v1/es/person-name
Try on playgroundReturns a realistic synthetic Spanish person name: given name(s), surname, and initials, in the local script. Use `sex` to pin the gendered form (`m`/`f`) or omit it for a random one. `edge=true` biases the name shape — second given names, double-barrelled surnames, and very short names become far more likely. Set `caseStrict=false` to deliberately mangle the name/surname casing (initials stay proper uppercase).
Query parameters
| Parameter | Type | Description |
|---|---|---|
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname (all-lower, all-upper, or random); initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias toward edge-case name shapes (second given names, double surnames, short names). |
| extreme | boolean | Return a correct name whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Gendered form of the name: "m" or "f". Omit for random. |
Request
curl https://api.real-fake-data.com/v1/es/person-nameResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s), in the local script, agreeing with the reported sex. |
| surname | string | Surname in the form matching the sex (inflected where the language requires it). |
| initials | string | Uppercase initials of name and surname, no dots, e.g. `JK`. |
| sex | "m" | "f" | The sex the name was inflected for. |
API reference
GET /v1/es/offering
Try on playgroundReturns a realistic synthetic Spanish offering — a product or service with a localized name, a plausible EUR price, its unit, and its industry label. Pin `industry` (NACE code), `type` (product/service), or filter by `industryName`/`offeringName` full text. Set `edge=true` for the price/format corners, `extreme=true` for a hostile-encoded name, or `invalid=true` for a broken record.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict to edge-case offerings (price-band extremes, unusual units, long names). |
| extreme | boolean | Return a correct offering whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, homoglyphs, or bidi marks). Price, unit and industry label stay clean. |
| industry | "73" | "28.3" | "93.2" | "71" | "90" | "29.3" | "10.7" | "64" | "56.30" | "11" | "30.1" | "47.6" | "26.7" | "95.3" | "56.21" | "23.4" | "81.2" | "14" | "95.1" | "26.2" | "41" | "70" | "26.4" | "49.4" | "10.5" | "74.1" | "85" | "43.2" | "82.3" | "59" | "56.12" | "31" | "92" | "81.3" | "23.1" | "47.1" | "96.2" | "27.5" | "86.1" | "55" | "65" | "32.1" | "96.1" | "15" | "69" | "86.2" | "91.2" | "32.2" | "21" | "74.2" | "58" | "68" | "78" | "43.3" | "77" | "56.11" | "80" | "62" | "10.8" | "93.1" | "32.3" | "61" | "13" | "32.4" | "74.3" | "79" | "75" | "63" | "16" | Pin the industry by NACE code. Omit to draw across all covered industries. |
| industryName | string | Full-text filter: keep offerings whose localized industry label contains this. |
| invalid | boolean | Return a deliberately invalid offering (a price outside its band, a negative price, or an empty name) for negative-path testing. Cannot combine with edge/extreme. |
| language | "es" | Pin the name language. Omit for the country’s weighted mix. |
| offeringName | string | Full-text filter: keep offerings whose localized name contains this. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "product" | "service" | Restrict to products or services. Omit for both. |
Request
curl https://api.real-fake-data.com/v1/es/offeringResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The offering name in the resolved language. |
| offeringName | string | The full offering name (alias of `value`). |
| kind | "product" | "service" | Whether it is a good or a rendered service. |
| unit | string | The unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …). |
| price | integer | A single plausible price, in EUR minor units (cents). |
| currency | "EUR" | Currency of `price`; always EUR. |
| industryCode | string | NACE Rev. 2.1 code of the offering’s industry. |
| industryName | string | The localized industry label in the resolved language. |
| language | string | BCP-47 subtag used for this record’s names. |
API reference
GET /v1/es/vehicle-registration
Try on playgroundReturns a realistic Spanish vehicle registration plate. `type` selects the kind: `standard` (default, current `NNNN LLL`, e.g. 1234 BCD), `motorcycle` (text-identical), or a service/special class — `military` (ET/FN/EA), `diplomatic` (CD), `guardia-civil` (PGC), `national-police` (CNP), `temporary` (P), `dealer` (V), `historic` (H), or `trailer` (R). `era` chooses the format: `current` (default), `legacy` (the pre-2000 provincial `L(L)-NNNN-LL`, e.g. M-1234-AB, still common), or `both` (drawn per call); it only affects standard/motorcycle. `province` forces the legacy provincial code (an unknown province is a 400). Spain issues no vanity plates and no plate carries a checksum. Use `format` to choose spaced or compact rendering (legacy plates always render hyphenated).
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case plates from the rare corners of the format. |
| era | "current" | "legacy" | "both" | Format era: current (post-2000 NNNN LLL), legacy (pre-2000 provincial L(L)-NNNN-LL), or both (drawn per call). Only affects standard/motorcycle. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "with-space" | "compact" | Plate rendering: with a space or compact. Default with-space. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| province | string | Force the legacy provincial code to a province (e.g. Madrid, Barcelona). Legacy/both eras, standard/motorcycle only. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "standard" | "motorcycle" | "military" | "diplomatic" | "guardia-civil" | "national-police" | "temporary" | "dealer" | "historic" | "trailer" | Plate kind: standard, motorcycle, military, diplomatic, guardia-civil, national-police, temporary, dealer, historic, or trailer. |
Request
curl https://api.real-fake-data.com/v1/es/vehicle-registrationResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The plate in the requested format, e.g. "1234 BCD" or "M-1234-AB". |
| type | "standard" | "motorcycle" | "military" | "diplomatic" | "guardia-civil" | "national-police" | "temporary" | "dealer" | "historic" | "trailer" | Which kind of plate this is. |
| era | "current" | "legacy" | Which era's format this plate follows: current (post-2000) or legacy (pre-2000). |
| provinceoptional | string | The province the legacy provincial code identifies (e.g. Madrid for M-1234-AB); present only on legacy plates with a real provincial head. |
API reference
GET /v1/se/company
Try on playgroundReturns a consistent synthetic Swedish company in one call: a full trading name with its legal form, plus the matching organisationsnummer. Shape the name with `strategy` and `legalForm` (as on `/v1/se/company-name`). Set `invalid=true` to corrupt the checksummed identifiers (the name stays intact), for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case values from the rare corners. |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Corrupt the checksummed identifiers, for testing validators. |
| legalForm | "any" | "none" | "AB" | "HB" | "KB" | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family for the company name. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/se/companyResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form, or `null` when none was added. |
| organisationsnummer | string | The matching organisationsnummer identifier. |
API reference
GET /v1/se/company-name
Try on playgroundReturns a realistic synthetic Swedish company name across the naming families (coined, owner-surname, descriptive, modern), with an optional trailing legal form in its authentic local form. Pin `strategy` or `legalForm`, set `legalForm=none` to omit it, or `edge=true` for the punctuation-heavy / long-form corners.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case names (punctuation-heavy families, long/rare forms). |
| extreme | boolean | Return a correct company whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). The legal form and any identifiers stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| legalForm | "any" | "none" | "AB" | "HB" | "KB" | Append a specific legal form, "any" for weighted-random, or "none" to omit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Naming family. Omit for a weighted-random one. |
Request
curl https://api.real-fake-data.com/v1/se/company-nameResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full company name, including any prefix and legal form. |
| legalForm | string | The appended legal form (e.g. `GmbH`, `S.r.l.`), or `null` when none was added. |
| strategy | "morpheme" | "surname" | "descriptive" | "modern" | Which naming family produced the name. |
API reference
GET /v1/se/email
Try on playgroundReturns a realistic synthetic Swedish email address: a name-based local part (romanised to ASCII) on a free webmail, a Swedish regional provider, or a corporate domain built from a Swedish company brand. `domain` pins an exact domain; `domainCategory` (`free`/`regional`/`corporate`/`any`) scopes a weighted-random draw. `pattern` selects the local-part shape or `any`. `plusTag` controls plus-addressing; `exotic=true` allows the rarer RFC-valid characters.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| domain | stringpattern ^[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ | Pin an exact domain, e.g. "gmail.com". Overrides domainCategory. |
| domainCategory | "free" | "regional" | "corporate" | "any" | Scope the random domain draw: free webmail, regional providers, corporate domains, or any. |
| edge | boolean | Restrict output to edge-case addresses from the rare corners of the format. |
| exotic | boolean | Allow rarer RFC-valid local-part characters (%, =, ~). Off by default. |
| extreme | boolean | Return a correct address whose value is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). localPart, domain, and the decomposition stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | "any" | Local-part shape, e.g. "first.last"; "any" picks a weighted-random one. |
| plusTag | stringpattern ^[A-Za-z0-9_-]+$ | Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/se/emailResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The full email address, e.g. "anna.schmidt+news@mueller-bau.de". |
| localPart | string | The part before the `@`, including any plus tag. |
| domain | string | The domain, e.g. "gmail.com", "wp.pl", or "mueller-bau.de". |
| pattern | "first.last" | "firstlast" | "first_last" | "first.last.number" | "flast" | "initial.last" | "noun.number" | "first.company" | "company.first" | Which local-part pattern produced the address. |
| domainCategory | "free" | "regional" | "corporate" | Whether the domain is free, regional, or corporate. |
| company | string | The company name a corporate domain or company local-part was derived from, or `null`. |
| plusTag | string | The plus-addressing tag, or `null` when none. |
API reference
GET /v1/se/iban
Try on playgroundReturns a valid Swedish IBAN with a correct checksum. Pin the issuing bank with `bankCode` (3-digit bank code) or `bankName` (mutually exclusive), or let it be chosen at random. Set `invalid=true` to get an IBAN with deliberately wrong check digits, for testing checksum validators.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| bankCode | string | Pin the issuing bank by its 3-digit bank code. Mutually exclusive with bankName. |
| bankName | string | Pin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case IBANs from the rare corners of the format. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "grouped" | "compact" | IBAN rendering: grouped or compact. Default grouped. |
| invalid | boolean | Return an IBAN with deliberately wrong check digits, for testing validators. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/se/ibanResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The IBAN in the requested format. |
| electronicFormat | string | The space-free electronic form of the IBAN. |
| bankCode | string | The bank identifier embedded in the IBAN. |
| bankName | string | Human-readable name of the issuing bank. |
API reference
GET /v1/se/organisationsnummer
Try on playgroundReturns a valid Swedish organisationsnummer (legal-entity identifier) with a correct Luhn check digit. Use `format` for the SE VAT number. Set `invalid=true` for a number with a deliberately wrong check digit.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to valid edge-case organisationsnummer from the rare corners. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "national" | "vat" | Rendering: bare 10-digit national number (default) or SE VAT number. |
| invalid | boolean | Return a number with a deliberately wrong Luhn check digit. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
Request
curl https://api.real-fake-data.com/v1/se/organisationsnummerResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The identifier in the requested format (national or VAT). |
| digits | string | The canonical, unprefixed 10-digit number. |
API reference
GET /v1/se/person
Try on playgroundReturns a synthetic Swedish person: given name(s), surname, initials, birth date, and the matching personnummer. Constrain with `sex` and age/birth-date filters (contradictory combinations are rejected with a 400). Set `invalid=true` for a deliberately wrong check value, `edge=true` for rare-corner values, and `caseStrict=false` to mangle the name casing.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| atAge | integer | Exact age in years at request time. |
| bornAfter | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornBefore | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornOn | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD. |
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname; initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias the number and name shape toward their rarely-exercised corners. |
| extreme | boolean | Return a correct person whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials, birthDate, and the national identifier stay clean. |
| invalid | boolean | Return a person whose personnummer has a deliberately wrong check value. |
| olderThan | integer | Minimum age in years at request time. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Encoded sex: "m" or "f". |
| youngerThan | integer | Maximum age in years at request time. |
Request
curl https://api.real-fake-data.com/v1/se/personResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s). |
| surname | string | Surname. |
| initials | string | Uppercase initials of name and surname, no dots. |
| birthDate | string | The birth date, ISO `YYYY-MM-DD`. |
| personnummer | string | The matching personnummer. |
API reference
GET /v1/se/person-name
Try on playgroundReturns a realistic synthetic Swedish person name: given name(s), surname, and initials, in the local script. Use `sex` to pin the gendered form (`m`/`f`) or omit it for a random one. `edge=true` biases the name shape — second given names, double-barrelled surnames, and very short names become far more likely. Set `caseStrict=false` to deliberately mangle the name/surname casing (initials stay proper uppercase).
Query parameters
| Parameter | Type | Description |
|---|---|---|
| caseStrict | boolean | Defaults to true (proper casing). Set false to deliberately mangle the casing of name and surname (all-lower, all-upper, or random); initials stay proper uppercase. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Bias toward edge-case name shapes (second given names, double surnames, short names). |
| extreme | boolean | Return a correct name whose name and surname are wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, homoglyph letters, or bidi/combining marks). initials stay clean. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Gendered form of the name: "m" or "f". Omit for random. |
Request
curl https://api.real-fake-data.com/v1/se/person-nameResponse fields
| Field | Type | Description |
|---|---|---|
| name | string | Given (first) name(s), in the local script, agreeing with the reported sex. |
| surname | string | Surname in the form matching the sex (inflected where the language requires it). |
| initials | string | Uppercase initials of name and surname, no dots, e.g. `JK`. |
| sex | "m" | "f" | The sex the name was inflected for. |
API reference
GET /v1/se/personnummer
Try on playgroundReturns a valid Swedish personnummer with a correct Luhn check digit. Constrain with `sex` and age/birth-date filters (the full birth date is encoded). Contradictory combinations are rejected with a 400. Use `format` for the short/long rendering and `kind` for a samordningsnummer. Set `invalid=true` for a deliberately wrong check digit.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| atAge | integer | Exact age in years at request time. |
| bornAfter | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornBefore | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD). |
| bornOn | stringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$ | Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD. |
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case values. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "short" | "long" | Rendering: short `YYMMDD-NNNC` (default) or long `YYYYMMDDNNNC`. |
| invalid | boolean | Return a number with a deliberately wrong Luhn check digit; date/sex stay valid. |
| kind | "personnummer" | "samordningsnummer" | Which kind to mint: ordinary `personnummer` (default) or `samordningsnummer`. |
| olderThan | integer | Minimum age in years at request time. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| sex | "m" | "f" | Encoded sex: "m" or "f". |
| youngerThan | integer | Maximum age in years at request time. |
Request
curl https://api.real-fake-data.com/v1/se/personnummerResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The number in the requested format (short or long). |
| digits | string | The canonical 10-digit `YYMMDDNNNC`, no separator. |
| birthDate | string | The encoded birth date, ISO `YYYY-MM-DD` (the true day). |
| sex | "m" | "f" | Encoded sex: `m` (odd 9th digit) or `f` (even 9th digit). |
API reference
GET /v1/se/offering
Try on playgroundReturns a realistic synthetic Swedish offering — a product or service with a localized name, a plausible EUR price, its unit, and its industry label. Pin `industry` (NACE code), `type` (product/service), or filter by `industryName`/`offeringName` full text. Set `edge=true` for the price/format corners, `extreme=true` for a hostile-encoded name, or `invalid=true` for a broken record.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict to edge-case offerings (price-band extremes, unusual units, long names). |
| extreme | boolean | Return a correct offering whose name is wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, homoglyphs, or bidi marks). Price, unit and industry label stay clean. |
| industry | "73" | "28.3" | "93.2" | "71" | "90" | "29.3" | "10.7" | "64" | "56.30" | "11" | "30.1" | "47.6" | "26.7" | "95.3" | "56.21" | "23.4" | "81.2" | "14" | "95.1" | "26.2" | "41" | "70" | "26.4" | "49.4" | "10.5" | "74.1" | "85" | "43.2" | "82.3" | "59" | "56.12" | "31" | "92" | "81.3" | "23.1" | "47.1" | "96.2" | "27.5" | "86.1" | "55" | "65" | "32.1" | "96.1" | "15" | "69" | "86.2" | "91.2" | "32.2" | "21" | "74.2" | "58" | "68" | "78" | "43.3" | "77" | "56.11" | "80" | "62" | "10.8" | "93.1" | "32.3" | "61" | "13" | "32.4" | "74.3" | "79" | "75" | "63" | "16" | Pin the industry by NACE code. Omit to draw across all covered industries. |
| industryName | string | Full-text filter: keep offerings whose localized industry label contains this. |
| invalid | boolean | Return a deliberately invalid offering (a price outside its band, a negative price, or an empty name) for negative-path testing. Cannot combine with edge/extreme. |
| language | "sv" | Pin the name language. Omit for the country’s weighted mix. |
| offeringName | string | Full-text filter: keep offerings whose localized name contains this. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "product" | "service" | Restrict to products or services. Omit for both. |
Request
curl https://api.real-fake-data.com/v1/se/offeringResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The offering name in the resolved language. |
| offeringName | string | The full offering name (alias of `value`). |
| kind | "product" | "service" | Whether it is a good or a rendered service. |
| unit | string | The unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …). |
| price | integer | A single plausible price, in EUR minor units (cents). |
| currency | "EUR" | Currency of `price`; always EUR. |
| industryCode | string | NACE Rev. 2.1 code of the offering’s industry. |
| industryName | string | The localized industry label in the resolved language. |
| language | string | BCP-47 subtag used for this record’s names. |
API reference
GET /v1/se/vehicle-registration
Try on playgroundReturns a realistic Swedish vehicle registration plate. `type` selects the kind: `standard` (default, classic `LLL NNN` or the post-2019 letter-tail `LLL NNL`, e.g. MRK 45T), `custom` (2–7-character vanity), `diplomatic` (`LL NNN L`), `military` (`NNNNNN`), or `motorcycle` (the standard sequence, two-row on the physical plate). `era` honours the format vintage for standard/motorcycle plates: `current` (post-2019 letter tail allowed), `legacy` (classic digit tail only), or `both`. Sweden is nationwide-sequential with no region code and no checksum, so there is no region filter and no invalid variant. Use `format` to choose spaced or compact rendering.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| count | integer1–1000 | Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch. |
| edge | boolean | Restrict output to edge-case plates from the rare corners of the format. |
| era | "current" | "legacy" | "both" | Format era for standard/motorcycle plates: current (post-2019 letter tail allowed), legacy (classic digit tail), or both. Default current. |
| extreme | boolean | Return a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation. |
| format | "with-space" | "compact" | Plate rendering: with a space or compact. Default with-space. |
| invalid | boolean | Return a deliberately invalid value that fails validation, for testing rejection paths. |
| seed | integer | Integer seed for reproducible output: the same seed always yields the same record. |
| type | "standard" | "custom" | "diplomatic" | "military" | "motorcycle" | Plate kind: standard, custom, diplomatic, military, or motorcycle. |
Request
curl https://api.real-fake-data.com/v1/se/vehicle-registrationResponse fields
| Field | Type | Description |
|---|---|---|
| value | string | The plate in the requested format, e.g. "ABC 123", "MRK 45T", or "ABC123". |
| type | "standard" | "custom" | "diplomatic" | "military" | "motorcycle" | Which kind of plate this is. |