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.

terminal
curl https://api.real-fake-data.com/v1/person-name

Getting 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 header
Authorization: Bearer rfd_live_3f9a••••••2c71

Keep 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.

Response200 OK
{
  "data": { /* the generated record — shape varies by endpoint */ },
  "meta": {
    "seed": 7421,
    "generatorId": "any.person-name"
  }
}
  • data holds the record you asked for. Its fields are endpoint-specific and are listed in that endpoint’s reference below.
  • meta.seed is 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.generatorId identifies which generator produced the record.
  • meta is additive some 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 response
{
  "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.

StatusCodeMeaning
400VALIDATION_ERRORA query parameter was malformed or out of range. details lists each bad parameter.
401UNAUTHORIZEDThe API key is missing, unknown, or expired.
403FORBIDDENThe 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.
404GENERATOR_NOT_FOUNDNo generator or endpoint matches that path.
429RATE_LIMITEDYou exceeded the per-minute request limit. Retry after the window resets — see below.
429QUOTA_EXCEEDEDYou exhausted your plan’s monthly request quota.
500INTERNAL_ERRORAn 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):

Response headers
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

GET /v1/generators
curl https://api.real-fake-data.com/v1/generators

Response fields

FieldTypeDescription
generatorsobject[]

Example response

Response200 OK
{
  "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

GET /v1/health
curl https://api.real-fake-data.com/v1/health

Response fields

FieldTypeDescription
status"ok"
versionstring
uptimenumberProcess uptime in seconds.

Example response

Response200 OK
{
  "status": "ok",
  "version": "0.0.0",
  "uptime": 3812.47
}

API reference

GET /v1/sequence

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge cases from the rare corners of the domain.
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
startintegerFirst value of the sequence. Default 1.
stepintegerIncrement between consecutive records. Default 1; must be non-zero.

Request

GET /v1/sequence
curl https://api.real-fake-data.com/v1/sequence

Response fields

FieldTypeDescription
valueintegerThe sequence value: `start + index · step`.

API reference

GET /v1/company-name

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number 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.
edgebooleanRestrict output to edge-case names (punctuation-heavy families, long/rare forms).
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger 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

GET /v1/company-name
curl https://api.real-fake-data.com/v1/company-name

Response fields

FieldTypeDescription
valuestringThe full company name, including any legal form.
legalFormstringThe appended legal form, or `null` when none.
strategy"morpheme" | "surname" | "descriptive" | "modern"Which naming family produced the name.
countrystringISO 3166 alpha-2 code of the country this name was drawn from.

API reference

GET /v1/enum

Try on playground

Returns 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

ParameterTypeDescription
choicesstringURL-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.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanInvert the distribution: the least-probable member becomes the most likely (a zero-weight member rises to the top). Requires the Pro plan or above.
extremebooleanReturn 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.
invalidbooleanReturn a value that is NOT in `choices` — a random token, with probability 0 — for exercising unexpected-value handling.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/enum
curl https://api.real-fake-data.com/v1/enum

Response fields

FieldTypeDescription
valuestringThe drawn enum member.
probabilitynumberThe member's weight normalized by the sum of all weights.

API reference

GET /v1/object

Try on playground

Returns 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

ParameterTypeDescription
choicesstringURL-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.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanInvert the distribution: the least-probable candidate becomes the most likely (a zero-weight candidate rises to the top). Requires the Pro plan or above.
extremebooleanReturn 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.
invalidbooleanReturn a sentinel object NOT among `choices` ({ __invalid__: true, token }), with probability 0 — for exercising unexpected-shape handling.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/object
curl https://api.real-fake-data.com/v1/object

Response fields

FieldTypeDescription
valueoptionalobjectThe drawn candidate, returned verbatim.
probabilitynumberThe candidate's weight normalized by the sum of all weights.

API reference

GET /v1/email

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number 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.
domainstringpattern ^[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.
edgebooleanRestrict output to edge-case addresses from the rare corners of the format.
exoticbooleanAllow rarer RFC-valid local-part characters (%, =, ~). Off by default.
extremebooleanReturn 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.
invalidbooleanReturn 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.
plusTagstringpattern ^[A-Za-z0-9_-]+$Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/email
curl https://api.real-fake-data.com/v1/email

Response fields

FieldTypeDescription
valuestringThe full email address, e.g. "anna.schmidt+news@mueller-bau.de".
localPartstringThe part before the `@`, including any plus tag.
domainstringThe 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.
companystringThe company name a corporate domain or company local-part was derived from, or `null`.
plusTagstringThe plus-addressing tag, or `null` when none.
countrystringISO 3166 alpha-2 code of the country this address was drawn from.

API reference

GET /v1/lorem

Try on playground

Returns 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

ParameterTypeDescription
bytesinteger1–100000Target length in UTF-8 bytes (1–100000). Most precise unit wins if several are given.
charsinteger1–100000Target length in characters (1–100000).
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge cases from the rare corners of the domain.
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
paragraphsinteger1–1000Target length in paragraphs (1–1000).
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
startWithLorembooleanWhether the text opens with the canonical "Lorem ipsum dolor sit amet…". Default true.
wordsinteger1–10000Target length in words (1–10000).

Request

GET /v1/lorem
curl https://api.real-fake-data.com/v1/lorem

Response fields

FieldTypeDescription
valuestringThe generated lorem-ipsum text.
wordsintegerNumber of words in the text.
charsintegerLength of the text in characters.
bytesintegerLength of the text in UTF-8 bytes.
paragraphsintegerNumber of blank-line-separated paragraphs.
startedWithLorembooleanWhether the text begins with the canonical "Lorem ipsum…" opening.

API reference

GET /v1/object-id

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge cases from the rare corners of the domain.
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/object-id
curl https://api.real-fake-data.com/v1/object-id

Response fields

FieldTypeDescription
valuestringThe 24-character hex MongoDB ObjectId.

API reference

GET /v1/nanoid

Try on playground

Returns 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

ParameterTypeDescription
alphabetstringCustom alphabet to draw from. Default is nanoid’s URL-safe 64-character set.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge cases from the rare corners of the domain.
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
sizeinteger1–255Id length in characters (1–255). Default 21.

Request

GET /v1/nanoid
curl https://api.real-fake-data.com/v1/nanoid

Response fields

FieldTypeDescription
valuestringThe generated Nano ID.

API reference

GET /v1/person-name

Try on playground

Returns 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

ParameterTypeDescription
caseStrictbooleanDefaults 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.
countinteger1–1000Number 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.
edgebooleanBias toward edge-case name shapes (second given names, double surnames, short names).
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger 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

GET /v1/person-name
curl https://api.real-fake-data.com/v1/person-name

Response fields

FieldTypeDescription
namestringGiven (first) name(s), in the local script, agreeing with the sex.
surnamestringSurname in the form matching the sex (inflected where required).
initialsstringUppercase initials of name and surname, no dots.
sex"m" | "f"The sex the name was inflected for.
countrystringISO 3166 alpha-2 code of the country this name was drawn from.

API reference

GET /v1/offering

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number 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.
edgebooleanRestrict to edge-case offerings (price-band extremes, unusual units, long names).
extremebooleanReturn 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.
industryNamestringFull-text filter: keep offerings whose localized industry label contains this.
invalidbooleanReturn 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.
offeringNamestringFull-text filter: keep offerings whose localized name contains this.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
type"product" | "service"Restrict to products or services. Omit for both.

Request

GET /v1/offering
curl https://api.real-fake-data.com/v1/offering

Response fields

FieldTypeDescription
valuestringThe offering name in the resolved language.
offeringNamestringThe full offering name (alias of `value`).
kind"product" | "service"Whether it is a good or a rendered service.
unitstringThe unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …).
priceintegerA single plausible price, in EUR minor units (cents).
currency"EUR"Currency of `price`; always EUR.
industryCodestringNACE Rev. 2.1 code of the offering’s industry.
industryNamestringThe localized industry label in the resolved language.
languagestringBCP-47 subtag used for this record’s names.
countrystringISO 3166 alpha-2 code of the country this offering was drawn from.

API reference

GET /v1/custom-regex

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge cases from the rare corners of the domain.
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
maxRepetitioninteger1–256How many times unbounded quantifiers (*, +, {n,}) may expand. Default 32.
pattern*stringRegular expression (source form, no delimiters) to generate a matching string for, e.g. "[A-Z]{2}-\d{6}".
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/custom-regex
curl https://api.real-fake-data.com/v1/custom-regex

Response fields

FieldTypeDescription
valuestringA random string matching the supplied pattern.
patternstringThe source pattern the value was generated from.

API reference

GET /v1/ulid

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge cases from the rare corners of the domain.
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/ulid
curl https://api.real-fake-data.com/v1/ulid

Response fields

FieldTypeDescription
valuestringThe 26-character Crockford-Base32 ULID.

API reference

GET /v1/uuid

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge cases from the rare corners of the domain.
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger 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

GET /v1/uuid
curl https://api.real-fake-data.com/v1/uuid

Response fields

FieldTypeDescription
valuestringThe canonical hyphenated lowercase UUID.
version"4" | "7"The UUID version generated.

API reference

GET /v1/at/company

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case values from the rare corners.
extremebooleanReturn 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.
invalidbooleanCorrupt 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.
seedintegerInteger 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

GET /v1/at/company
curl https://api.real-fake-data.com/v1/at/company

Response fields

FieldTypeDescription
namestringThe full company name, including any prefix and legal form.
legalFormstringThe appended legal form, or `null` when none was added.
firmenbuchnummerstringThe matching firmenbuchnummer identifier.
uidstringThe matching uid identifier.
steuernummerstringThe matching steuernummer identifier.

API reference

GET /v1/at/company-name

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case names (punctuation-heavy families, long/rare forms).
extremebooleanReturn 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.
invalidbooleanReturn 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.
seedintegerInteger 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

GET /v1/at/company-name
curl https://api.real-fake-data.com/v1/at/company-name

Response fields

FieldTypeDescription
valuestringThe full company name, including any prefix and legal form.
legalFormstringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
domainstringpattern ^[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.
edgebooleanRestrict output to edge-case addresses from the rare corners of the format.
exoticbooleanAllow rarer RFC-valid local-part characters (%, =, ~). Off by default.
extremebooleanReturn 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.
invalidbooleanReturn 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.
plusTagstringpattern ^[A-Za-z0-9_-]+$Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/at/email
curl https://api.real-fake-data.com/v1/at/email

Response fields

FieldTypeDescription
valuestringThe full email address, e.g. "anna.schmidt+news@mueller-bau.de".
localPartstringThe part before the `@`, including any plus tag.
domainstringThe 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.
companystringThe company name a corporate domain or company local-part was derived from, or `null`.
plusTagstringThe plus-addressing tag, or `null` when none.

API reference

GET /v1/at/firmenbuchnummer

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case numbers from the rare corners.
extremebooleanReturn 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.
invalidbooleanReturn a Firmenbuchnummer with a deliberately wrong check letter.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/at/firmenbuchnummer
curl https://api.real-fake-data.com/v1/at/firmenbuchnummer

Response fields

FieldTypeDescription
valuestringThe rendered Firmenbuchnummer, e.g. `FN 123456a`.
numberintegerThe sequence number (1–999999), no prefix or check letter.
letterstringThe lowercase check letter (`a`–`z`).

API reference

GET /v1/at/iban

Try on playground

Returns 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

ParameterTypeDescription
bankCodestringPin the issuing bank by its 5-digit bank code. Mutually exclusive with bankName.
bankNamestringPin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case IBANs from the rare corners of the format.
extremebooleanReturn 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.
invalidbooleanReturn an IBAN with deliberately wrong check digits, for testing validators.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/at/iban
curl https://api.real-fake-data.com/v1/at/iban

Response fields

FieldTypeDescription
valuestringThe IBAN in the requested format.
electronicFormatstringThe space-free electronic form of the IBAN.
bankCodestringThe bank identifier embedded in the IBAN.
bankNamestringHuman-readable name of the issuing bank.

API reference

GET /v1/at/person

Try on playground

Returns 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

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD.
caseStrictbooleanDefaults to true (proper casing). Set false to deliberately mangle the casing of name and surname; initials stay proper uppercase.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias the number and name shape toward their rarely-exercised corners.
extremebooleanReturn 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.
invalidbooleanReturn a person whose SVNR has a deliberately wrong check value.
olderThanintegerMinimum age in years at request time.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
sex"m" | "f"Encoded sex: "m" or "f".
youngerThanintegerMaximum age in years at request time.

Request

GET /v1/at/person
curl https://api.real-fake-data.com/v1/at/person

Response fields

FieldTypeDescription
namestringGiven (first) name(s).
surnamestringSurname.
initialsstringUppercase initials of name and surname, no dots.
birthDatestringThe birth date, ISO `YYYY-MM-DD`.
svnrstringThe matching SVNR.

API reference

GET /v1/at/person-name

Try on playground

Returns 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

ParameterTypeDescription
caseStrictbooleanDefaults 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.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias toward edge-case name shapes (second given names, double surnames, short names).
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger 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

GET /v1/at/person-name
curl https://api.real-fake-data.com/v1/at/person-name

Response fields

FieldTypeDescription
namestringGiven (first) name(s), in the local script, agreeing with the reported sex.
surnamestringSurname in the form matching the sex (inflected where the language requires it).
initialsstringUppercase 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict to edge-case offerings (price-band extremes, unusual units, long names).
extremebooleanReturn 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.
industryNamestringFull-text filter: keep offerings whose localized industry label contains this.
invalidbooleanReturn 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.
offeringNamestringFull-text filter: keep offerings whose localized name contains this.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
type"product" | "service"Restrict to products or services. Omit for both.

Request

GET /v1/at/offering
curl https://api.real-fake-data.com/v1/at/offering

Response fields

FieldTypeDescription
valuestringThe offering name in the resolved language.
offeringNamestringThe full offering name (alias of `value`).
kind"product" | "service"Whether it is a good or a rendered service.
unitstringThe unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …).
priceintegerA single plausible price, in EUR minor units (cents).
currency"EUR"Currency of `price`; always EUR.
industryCodestringNACE Rev. 2.1 code of the offering’s industry.
industryNamestringThe localized industry label in the resolved language.
languagestringBCP-47 subtag used for this record’s names.

API reference

GET /v1/at/steuernummer

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case numbers from the rare corners.
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/at/steuernummer
curl https://api.real-fake-data.com/v1/at/steuernummer

Response fields

FieldTypeDescription
valuestringThe Steuernummer rendered as `NN-NNN/NNNN`.
digitsstringThe canonical 9 digits without separators.

API reference

GET /v1/at/svnr

Try on playground

Returns 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

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case values.
extremebooleanReturn 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.
invalidbooleanReturn an SVNR with a deliberately wrong check digit; the birth date stays valid.
olderThanintegerMinimum age in years at request time.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
youngerThanintegerMaximum age in years at request time.

Request

GET /v1/at/svnr
curl https://api.real-fake-data.com/v1/at/svnr

Response fields

FieldTypeDescription
valuestringThe bare 10-digit SVNR.
digitsstringThe canonical 10-digit SVNR.
birthDatestringThe encoded birth date, ISO `YYYY-MM-DD`.

API reference

GET /v1/at/uid

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case UIDs from the rare corners.
extremebooleanReturn 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.
invalidbooleanReturn a UID with a deliberately wrong check digit.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/at/uid
curl https://api.real-fake-data.com/v1/at/uid

Response fields

FieldTypeDescription
valuestringThe UID in the requested format (national or VAT).
digitsstringThe canonical 8 digits (7 payload + 1 check).

API reference

GET /v1/at/vehicle-registration

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
districtstringRestrict a region-encoding plate to a district (Bezirk/Statutarstadt) by name, e.g. Graz-Umgebung or Wien.
edgebooleanRestrict output to edge-case plates from the rare corners of the format.
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
statestringRestrict 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

GET /v1/at/vehicle-registration
curl https://api.real-fake-data.com/v1/at/vehicle-registration

Response fields

FieldTypeDescription
valuestringThe plate in the requested format, e.g. "GU 234 KP".
type"standard" | "custom" | "motorcycle" | "military" | "police" | "diplomatic"Which kind of plate this is.
districtoptionalstringThe district (Bezirk/Statutarstadt) whose code heads the plate, e.g. Graz-Umgebung. Present for region-encoding types, absent for military/police.
stateoptionalstringThe federal state (Bundesland) the district sits in, e.g. Steiermark. Present whenever district is.

API reference

GET /v1/be/company

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case values from the rare corners.
extremebooleanReturn 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.
invalidbooleanCorrupt 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.
seedintegerInteger 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

GET /v1/be/company
curl https://api.real-fake-data.com/v1/be/company

Response fields

FieldTypeDescription
namestringThe full company name, including any prefix and legal form.
legalFormstringThe appended legal form, or `null` when none was added.
ondernemingsnummerstringThe matching ondernemingsnummer identifier.

API reference

GET /v1/be/company-name

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case names (punctuation-heavy families, long/rare forms).
extremebooleanReturn 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.
invalidbooleanReturn 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.
seedintegerInteger 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

GET /v1/be/company-name
curl https://api.real-fake-data.com/v1/be/company-name

Response fields

FieldTypeDescription
valuestringThe full company name, including any prefix and legal form.
legalFormstringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
domainstringpattern ^[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.
edgebooleanRestrict output to edge-case addresses from the rare corners of the format.
exoticbooleanAllow rarer RFC-valid local-part characters (%, =, ~). Off by default.
extremebooleanReturn 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.
invalidbooleanReturn 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.
plusTagstringpattern ^[A-Za-z0-9_-]+$Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/be/email
curl https://api.real-fake-data.com/v1/be/email

Response fields

FieldTypeDescription
valuestringThe full email address, e.g. "anna.schmidt+news@mueller-bau.de".
localPartstringThe part before the `@`, including any plus tag.
domainstringThe 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.
companystringThe company name a corporate domain or company local-part was derived from, or `null`.
plusTagstringThe plus-addressing tag, or `null` when none.

API reference

GET /v1/be/iban

Try on playground

Returns 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

ParameterTypeDescription
bankCodestringPin the issuing bank by its 3-digit bank code. Mutually exclusive with bankName.
bankNamestringPin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case IBANs from the rare corners of the format.
extremebooleanReturn 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.
invalidbooleanReturn an IBAN with deliberately wrong check digits, for testing validators.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/be/iban
curl https://api.real-fake-data.com/v1/be/iban

Response fields

FieldTypeDescription
valuestringThe IBAN in the requested format.
electronicFormatstringThe space-free electronic form of the IBAN.
bankCodestringThe bank identifier embedded in the IBAN.
bankNamestringHuman-readable name of the issuing bank.

API reference

GET /v1/be/ondernemingsnummer

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case enterprise numbers from the rare corners.
extremebooleanReturn 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.
invalidbooleanReturn an enterprise number with a deliberately wrong check.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/be/ondernemingsnummer
curl https://api.real-fake-data.com/v1/be/ondernemingsnummer

Response fields

FieldTypeDescription
valuestringThe number in the requested format (national or VAT).
digitsstringThe canonical, unprefixed 10-digit enterprise number.

API reference

GET /v1/be/person

Try on playground

Returns 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

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD.
caseStrictbooleanDefaults to true (proper casing). Set false to deliberately mangle the casing of name and surname; initials stay proper uppercase.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias the number and name shape toward their rarely-exercised corners.
extremebooleanReturn 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.
invalidbooleanReturn a person whose national register number (RRN) has a deliberately wrong check value.
olderThanintegerMinimum age in years at request time.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
sex"m" | "f"Encoded sex: "m" or "f".
youngerThanintegerMaximum age in years at request time.

Request

GET /v1/be/person
curl https://api.real-fake-data.com/v1/be/person

Response fields

FieldTypeDescription
namestringGiven (first) name(s).
surnamestringSurname.
initialsstringUppercase initials of name and surname, no dots.
birthDatestringThe birth date, ISO `YYYY-MM-DD`.
rijksregisternummerstringThe matching national register number (RRN).

API reference

GET /v1/be/person-name

Try on playground

Returns 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

ParameterTypeDescription
caseStrictbooleanDefaults 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.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias toward edge-case name shapes (second given names, double surnames, short names).
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger 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

GET /v1/be/person-name
curl https://api.real-fake-data.com/v1/be/person-name

Response fields

FieldTypeDescription
namestringGiven (first) name(s), in the local script, agreeing with the reported sex.
surnamestringSurname in the form matching the sex (inflected where the language requires it).
initialsstringUppercase 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict to edge-case offerings (price-band extremes, unusual units, long names).
extremebooleanReturn 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.
industryNamestringFull-text filter: keep offerings whose localized industry label contains this.
invalidbooleanReturn 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.
offeringNamestringFull-text filter: keep offerings whose localized name contains this.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
type"product" | "service"Restrict to products or services. Omit for both.

Request

GET /v1/be/offering
curl https://api.real-fake-data.com/v1/be/offering

Response fields

FieldTypeDescription
valuestringThe offering name in the resolved language.
offeringNamestringThe full offering name (alias of `value`).
kind"product" | "service"Whether it is a good or a rendered service.
unitstringThe unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …).
priceintegerA single plausible price, in EUR minor units (cents).
currency"EUR"Currency of `price`; always EUR.
industryCodestringNACE Rev. 2.1 code of the offering’s industry.
industryNamestringThe localized industry label in the resolved language.
languagestringBCP-47 subtag used for this record’s names.

API reference

GET /v1/be/rijksregisternummer

Try on playground

Returns 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

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case values.
extremebooleanReturn 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.
invalidbooleanReturn 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.
olderThanintegerMinimum age in years at request time.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
sex"m" | "f"Encoded sex: "m" or "f".
youngerThanintegerMaximum age in years at request time.

Request

GET /v1/be/rijksregisternummer
curl https://api.real-fake-data.com/v1/be/rijksregisternummer

Response fields

FieldTypeDescription
valuestringThe 11-digit RRN rendered as bare digits.
digitsstringThe canonical 11-digit RRN.
birthDatestringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case plates from the rare corners of the format.
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger 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

GET /v1/be/vehicle-registration
curl https://api.real-fake-data.com/v1/be/vehicle-registration

Response fields

FieldTypeDescription
valuestringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case values from the rare corners.
extremebooleanReturn 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.
invalidbooleanCorrupt the checksummed identifiers, for testing validators.
legalForm"any" | "none" | "ООД" | "ЕООД" | "АД" | "ЕТ" | "СД"Append a specific legal form, "any" for weighted-random, or "none" to omit.
seedintegerInteger 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

GET /v1/bg/company
curl https://api.real-fake-data.com/v1/bg/company

Response fields

FieldTypeDescription
namestringThe full company name, including any prefix and legal form.
legalFormstringThe appended legal form, or `null` when none was added.
eikstringThe matching eik identifier.

API reference

GET /v1/bg/company-name

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case names (punctuation-heavy families, long/rare forms).
extremebooleanReturn 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.
invalidbooleanReturn 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.
seedintegerInteger 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

GET /v1/bg/company-name
curl https://api.real-fake-data.com/v1/bg/company-name

Response fields

FieldTypeDescription
valuestringThe full company name, including any prefix and legal form.
legalFormstringThe 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 playground

Returns 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

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case values.
extremebooleanReturn 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.
invalidbooleanReturn an EGN with a deliberately wrong check digit; date/sex stay valid.
olderThanintegerMinimum age in years at request time.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
sex"m" | "f"Encoded sex: "m" or "f".
youngerThanintegerMaximum age in years at request time.

Request

GET /v1/bg/egn
curl https://api.real-fake-data.com/v1/bg/egn

Response fields

FieldTypeDescription
valuestringThe EGN in the requested form (currently the bare 10 digits).
digitsstringThe canonical 10-digit EGN.
birthDatestringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case EIKs from the rare corners.
extremebooleanReturn 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.
invalidbooleanReturn an EIK with a deliberately wrong check digit.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/bg/eik
curl https://api.real-fake-data.com/v1/bg/eik

Response fields

FieldTypeDescription
valuestringThe identifier in the requested format (national EIK or BG VAT).
digitsstringThe canonical, unprefixed 9-digit EIK.

API reference

GET /v1/bg/email

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
domainstringpattern ^[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.
edgebooleanRestrict output to edge-case addresses from the rare corners of the format.
exoticbooleanAllow rarer RFC-valid local-part characters (%, =, ~). Off by default.
extremebooleanReturn 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.
invalidbooleanReturn 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.
plusTagstringpattern ^[A-Za-z0-9_-]+$Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/bg/email
curl https://api.real-fake-data.com/v1/bg/email

Response fields

FieldTypeDescription
valuestringThe full email address, e.g. "anna.schmidt+news@mueller-bau.de".
localPartstringThe part before the `@`, including any plus tag.
domainstringThe 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.
companystringThe company name a corporate domain or company local-part was derived from, or `null`.
plusTagstringThe plus-addressing tag, or `null` when none.

API reference

GET /v1/bg/iban

Try on playground

Returns 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

ParameterTypeDescription
bankCodestringPin the issuing bank by its 4-letter bank code. Mutually exclusive with bankName.
bankNamestringPin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case IBANs from the rare corners of the format.
extremebooleanReturn 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.
invalidbooleanReturn an IBAN with deliberately wrong check digits, for testing validators.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/bg/iban
curl https://api.real-fake-data.com/v1/bg/iban

Response fields

FieldTypeDescription
valuestringThe IBAN in the requested format.
electronicFormatstringThe space-free electronic form of the IBAN.
bankCodestringThe bank identifier embedded in the IBAN.
bankNamestringHuman-readable name of the issuing bank.

API reference

GET /v1/bg/person

Try on playground

Returns 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

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD.
caseStrictbooleanDefaults to true (proper casing). Set false to deliberately mangle the casing of name and surname; initials stay proper uppercase.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias the number and name shape toward their rarely-exercised corners.
extremebooleanReturn 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.
invalidbooleanReturn a person whose EGN has a deliberately wrong check value.
olderThanintegerMinimum age in years at request time.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
sex"m" | "f"Encoded sex: "m" or "f".
youngerThanintegerMaximum age in years at request time.

Request

GET /v1/bg/person
curl https://api.real-fake-data.com/v1/bg/person

Response fields

FieldTypeDescription
namestringGiven (first) name(s).
surnamestringSurname.
initialsstringUppercase initials of name and surname, no dots.
birthDatestringThe birth date, ISO `YYYY-MM-DD`.
egnstringThe matching EGN.

API reference

GET /v1/bg/person-name

Try on playground

Returns 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

ParameterTypeDescription
caseStrictbooleanDefaults 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.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias toward edge-case name shapes (second given names, double surnames, short names).
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger 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

GET /v1/bg/person-name
curl https://api.real-fake-data.com/v1/bg/person-name

Response fields

FieldTypeDescription
namestringGiven (first) name(s), in the local script, agreeing with the reported sex.
surnamestringSurname in the form matching the sex (inflected where the language requires it).
initialsstringUppercase 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict to edge-case offerings (price-band extremes, unusual units, long names).
extremebooleanReturn 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.
industryNamestringFull-text filter: keep offerings whose localized industry label contains this.
invalidbooleanReturn 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.
offeringNamestringFull-text filter: keep offerings whose localized name contains this.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
type"product" | "service"Restrict to products or services. Omit for both.

Request

GET /v1/bg/offering
curl https://api.real-fake-data.com/v1/bg/offering

Response fields

FieldTypeDescription
valuestringThe offering name in the resolved language.
offeringNamestringThe full offering name (alias of `value`).
kind"product" | "service"Whether it is a good or a rendered service.
unitstringThe unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …).
priceintegerA single plausible price, in EUR minor units (cents).
currency"EUR"Currency of `price`; always EUR.
industryCodestringNACE Rev. 2.1 code of the offering’s industry.
industryNamestringThe localized industry label in the resolved language.
languagestringBCP-47 subtag used for this record’s names.

API reference

GET /v1/bg/vehicle-registration

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case plates from the rare corners of the format.
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
provincestringPin 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).
seedintegerInteger 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

GET /v1/bg/vehicle-registration
curl https://api.real-fake-data.com/v1/bg/vehicle-registration

Response fields

FieldTypeDescription
valuestringThe 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.
provinceoptionalstringThe province (област) whose code opens the plate; present only for region-encoding types.
provinceCodeoptionalstringThe Latin-lookalike province code that opens the plate; present alongside province.

API reference

POST /v1/compose

Try on playground

Takes 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

POST /v1/compose
curl https://api.real-fake-data.com/v1/compose

API reference

GET /v1/hr/company

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case values from the rare corners.
extremebooleanReturn 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.
invalidbooleanCorrupt 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.
seedintegerInteger 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

GET /v1/hr/company
curl https://api.real-fake-data.com/v1/hr/company

Response fields

FieldTypeDescription
namestringThe full company name, including any prefix and legal form.
legalFormstringThe appended legal form, or `null` when none was added.
oibstringThe matching oib identifier.

API reference

GET /v1/hr/company-name

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case names (punctuation-heavy families, long/rare forms).
extremebooleanReturn 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.
invalidbooleanReturn 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.
seedintegerInteger 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

GET /v1/hr/company-name
curl https://api.real-fake-data.com/v1/hr/company-name

Response fields

FieldTypeDescription
valuestringThe full company name, including any prefix and legal form.
legalFormstringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
domainstringpattern ^[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.
edgebooleanRestrict output to edge-case addresses from the rare corners of the format.
exoticbooleanAllow rarer RFC-valid local-part characters (%, =, ~). Off by default.
extremebooleanReturn 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.
invalidbooleanReturn 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.
plusTagstringpattern ^[A-Za-z0-9_-]+$Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/hr/email
curl https://api.real-fake-data.com/v1/hr/email

Response fields

FieldTypeDescription
valuestringThe full email address, e.g. "anna.schmidt+news@mueller-bau.de".
localPartstringThe part before the `@`, including any plus tag.
domainstringThe 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.
companystringThe company name a corporate domain or company local-part was derived from, or `null`.
plusTagstringThe plus-addressing tag, or `null` when none.

API reference

GET /v1/hr/iban

Try on playground

Returns 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

ParameterTypeDescription
bankCodestringPin the issuing bank by its 7-digit VBDI code. Mutually exclusive with bankName.
bankNamestringPin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case IBANs from the rare corners of the format.
extremebooleanReturn 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.
invalidbooleanReturn an IBAN with deliberately wrong check digits, for testing validators.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/hr/iban
curl https://api.real-fake-data.com/v1/hr/iban

Response fields

FieldTypeDescription
valuestringThe IBAN in the requested format.
electronicFormatstringThe space-free electronic form of the IBAN.
bankCodestringThe bank identifier embedded in the IBAN.
bankNamestringHuman-readable name of the issuing bank.

API reference

GET /v1/hr/jmbg

Try on playground

Returns 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

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case values.
extremebooleanReturn 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.
invalidbooleanReturn a JMBG with a deliberately failing mod-11 check; birth date/sex stay valid.
olderThanintegerMinimum age in years at request time.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
sex"m" | "f"Encoded sex: "m" or "f".
youngerThanintegerMaximum age in years at request time.

Request

GET /v1/hr/jmbg
curl https://api.real-fake-data.com/v1/hr/jmbg

Response fields

FieldTypeDescription
valuestringThe 13-digit JMBG.
digitsstringThe canonical 13-digit JMBG.
birthDatestringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case OIBs from the rare corners.
extremebooleanReturn 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.
invalidbooleanReturn an OIB with a deliberately wrong ISO 7064 check digit.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/hr/oib
curl https://api.real-fake-data.com/v1/hr/oib

Response fields

FieldTypeDescription
valuestringThe OIB in the requested format (national or VAT).
digitsstringThe canonical, unprefixed 11-digit OIB.

API reference

GET /v1/hr/person

Try on playground

Returns 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

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD.
caseStrictbooleanDefaults to true (proper casing). Set false to deliberately mangle the casing of name and surname; initials stay proper uppercase.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias the number and name shape toward their rarely-exercised corners.
extremebooleanReturn 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.
invalidbooleanReturn a person whose JMBG has a deliberately wrong check value.
olderThanintegerMinimum age in years at request time.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
sex"m" | "f"Encoded sex: "m" or "f".
youngerThanintegerMaximum age in years at request time.

Request

GET /v1/hr/person
curl https://api.real-fake-data.com/v1/hr/person

Response fields

FieldTypeDescription
namestringGiven (first) name(s).
surnamestringSurname.
initialsstringUppercase initials of name and surname, no dots.
birthDatestringThe birth date, ISO `YYYY-MM-DD`.
jmbgstringThe matching JMBG.

API reference

GET /v1/hr/person-name

Try on playground

Returns 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

ParameterTypeDescription
caseStrictbooleanDefaults 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.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias toward edge-case name shapes (second given names, double surnames, short names).
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger 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

GET /v1/hr/person-name
curl https://api.real-fake-data.com/v1/hr/person-name

Response fields

FieldTypeDescription
namestringGiven (first) name(s), in the local script, agreeing with the reported sex.
surnamestringSurname in the form matching the sex (inflected where the language requires it).
initialsstringUppercase 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict to edge-case offerings (price-band extremes, unusual units, long names).
extremebooleanReturn 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.
industryNamestringFull-text filter: keep offerings whose localized industry label contains this.
invalidbooleanReturn 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.
offeringNamestringFull-text filter: keep offerings whose localized name contains this.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
type"product" | "service"Restrict to products or services. Omit for both.

Request

GET /v1/hr/offering
curl https://api.real-fake-data.com/v1/hr/offering

Response fields

FieldTypeDescription
valuestringThe offering name in the resolved language.
offeringNamestringThe full offering name (alias of `value`).
kind"product" | "service"Whether it is a good or a rendered service.
unitstringThe unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …).
priceintegerA single plausible price, in EUR minor units (cents).
currency"EUR"Currency of `price`; always EUR.
industryCodestringNACE Rev. 2.1 code of the offering’s industry.
industryNamestringThe localized industry label in the resolved language.
languagestringBCP-47 subtag used for this record’s names.

API reference

GET /v1/hr/vehicle-registration

Try on playground

Returns 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

ParameterTypeDescription
citystringRestrict a region-coded plate (standard, custom, motorcycle) to a city by name (e.g. Zagreb, Split). Diacritic-sensitive; an unknown city is a 400.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case plates from the rare corners of the format.
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger 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

GET /v1/hr/vehicle-registration
curl https://api.real-fake-data.com/v1/hr/vehicle-registration

Response fields

FieldTypeDescription
valuestringThe 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.
cityoptionalstringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case values from the rare corners.
extremebooleanReturn 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.
invalidbooleanCorrupt the checksummed identifiers, for testing validators.
legalForm"any" | "none" | "Λτδ" | "Δημόσια Λτδ" | "Ο.Ε." | "Ε.Ε."Append a specific legal form, "any" for weighted-random, or "none" to omit.
seedintegerInteger 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

GET /v1/cy/company
curl https://api.real-fake-data.com/v1/cy/company

Response fields

FieldTypeDescription
namestringThe full company name, including any prefix and legal form.
legalFormstringThe appended legal form, or `null` when none was added.
ticstringThe matching tic identifier.

API reference

GET /v1/cy/company-name

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case names (punctuation-heavy families, long/rare forms).
extremebooleanReturn 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.
invalidbooleanReturn 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.
seedintegerInteger 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

GET /v1/cy/company-name
curl https://api.real-fake-data.com/v1/cy/company-name

Response fields

FieldTypeDescription
valuestringThe full company name, including any prefix and legal form.
legalFormstringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
domainstringpattern ^[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.
edgebooleanRestrict output to edge-case addresses from the rare corners of the format.
exoticbooleanAllow rarer RFC-valid local-part characters (%, =, ~). Off by default.
extremebooleanReturn 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.
invalidbooleanReturn 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.
plusTagstringpattern ^[A-Za-z0-9_-]+$Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/cy/email
curl https://api.real-fake-data.com/v1/cy/email

Response fields

FieldTypeDescription
valuestringThe full email address, e.g. "anna.schmidt+news@mueller-bau.de".
localPartstringThe part before the `@`, including any plus tag.
domainstringThe 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.
companystringThe company name a corporate domain or company local-part was derived from, or `null`.
plusTagstringThe plus-addressing tag, or `null` when none.

API reference

GET /v1/cy/iban

Try on playground

Returns 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

ParameterTypeDescription
bankCodestringPin the issuing bank by its 3-digit bank code. Mutually exclusive with bankName.
bankNamestringPin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case IBANs from the rare corners of the format.
extremebooleanReturn 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.
invalidbooleanReturn an IBAN with deliberately wrong check digits, for testing validators.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/cy/iban
curl https://api.real-fake-data.com/v1/cy/iban

Response fields

FieldTypeDescription
valuestringThe IBAN in the requested format.
electronicFormatstringThe space-free electronic form of the IBAN.
bankCodestringThe bank identifier embedded in the IBAN.
bankNamestringHuman-readable name of the issuing bank.

API reference

GET /v1/cy/person

Try on playground

Returns 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

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD.
caseStrictbooleanDefaults to true (proper casing). Set false to deliberately mangle the casing of name and surname; initials stay proper uppercase.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias the number and name shape toward their rarely-exercised corners.
extremebooleanReturn 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.
invalidbooleanReturn a person whose TIC has a deliberately wrong check value.
olderThanintegerMinimum age in years at request time.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
sex"m" | "f"Encoded sex: "m" or "f".
youngerThanintegerMaximum age in years at request time.

Request

GET /v1/cy/person
curl https://api.real-fake-data.com/v1/cy/person

Response fields

FieldTypeDescription
namestringGiven (first) name(s).
surnamestringSurname.
initialsstringUppercase initials of name and surname, no dots.
birthDatestringThe birth date, ISO `YYYY-MM-DD`.
ticstringThe matching TIC.

API reference

GET /v1/cy/person-name

Try on playground

Returns 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

ParameterTypeDescription
caseStrictbooleanDefaults 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.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias toward edge-case name shapes (second given names, double surnames, short names).
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger 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

GET /v1/cy/person-name
curl https://api.real-fake-data.com/v1/cy/person-name

Response fields

FieldTypeDescription
namestringGiven (first) name(s), in the local script, agreeing with the reported sex.
surnamestringSurname in the form matching the sex (inflected where the language requires it).
initialsstringUppercase 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict to edge-case offerings (price-band extremes, unusual units, long names).
extremebooleanReturn 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.
industryNamestringFull-text filter: keep offerings whose localized industry label contains this.
invalidbooleanReturn 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.
offeringNamestringFull-text filter: keep offerings whose localized name contains this.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
type"product" | "service"Restrict to products or services. Omit for both.

Request

GET /v1/cy/offering
curl https://api.real-fake-data.com/v1/cy/offering

Response fields

FieldTypeDescription
valuestringThe offering name in the resolved language.
offeringNamestringThe full offering name (alias of `value`).
kind"product" | "service"Whether it is a good or a rendered service.
unitstringThe unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …).
priceintegerA single plausible price, in EUR minor units (cents).
currency"EUR"Currency of `price`; always EUR.
industryCodestringNACE Rev. 2.1 code of the offering’s industry.
industryNamestringThe localized industry label in the resolved language.
languagestringBCP-47 subtag used for this record’s names.

API reference

GET /v1/cy/vehicle-registration

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case plates from the rare corners of the format.
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger 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

GET /v1/cy/vehicle-registration
curl https://api.real-fake-data.com/v1/cy/vehicle-registration

Response fields

FieldTypeDescription
valuestringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case TICs from the rare corners.
extremebooleanReturn 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.
invalidbooleanReturn a TIC with a deliberately wrong check letter.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/cy/tic
curl https://api.real-fake-data.com/v1/cy/tic

Response fields

FieldTypeDescription
valuestringThe TIC in the requested format (national or CY VAT).
digitsstringThe canonical 8-digit body.
letterstringThe single check letter derived from the digits.

API reference

GET /v1/cz/company

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case values from the rare corners.
extremebooleanReturn 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.
invalidbooleanCorrupt 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.
seedintegerInteger 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

GET /v1/cz/company
curl https://api.real-fake-data.com/v1/cz/company

Response fields

FieldTypeDescription
namestringThe full company name, including any prefix and legal form.
legalFormstringThe appended legal form, or `null` when none was added.
icostringThe matching ico identifier.

API reference

GET /v1/cz/company-name

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case names (punctuation-heavy families, long/rare forms).
extremebooleanReturn 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.
invalidbooleanReturn 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.
seedintegerInteger 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

GET /v1/cz/company-name
curl https://api.real-fake-data.com/v1/cz/company-name

Response fields

FieldTypeDescription
valuestringThe full company name, including any prefix and legal form.
legalFormstringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
domainstringpattern ^[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.
edgebooleanRestrict output to edge-case addresses from the rare corners of the format.
exoticbooleanAllow rarer RFC-valid local-part characters (%, =, ~). Off by default.
extremebooleanReturn 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.
invalidbooleanReturn 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.
plusTagstringpattern ^[A-Za-z0-9_-]+$Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/cz/email
curl https://api.real-fake-data.com/v1/cz/email

Response fields

FieldTypeDescription
valuestringThe full email address, e.g. "anna.schmidt+news@mueller-bau.de".
localPartstringThe part before the `@`, including any plus tag.
domainstringThe 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.
companystringThe company name a corporate domain or company local-part was derived from, or `null`.
plusTagstringThe plus-addressing tag, or `null` when none.

API reference

GET /v1/cz/iban

Try on playground

Returns 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

ParameterTypeDescription
bankCodestringPin the issuing bank by its 4-digit bank code. Mutually exclusive with bankName.
bankNamestringPin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case IBANs from the rare corners of the format.
extremebooleanReturn 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.
invalidbooleanReturn an IBAN with deliberately wrong check digits, for testing validators.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/cz/iban
curl https://api.real-fake-data.com/v1/cz/iban

Response fields

FieldTypeDescription
valuestringThe IBAN in the requested format.
electronicFormatstringThe space-free electronic form of the IBAN.
bankCodestringThe bank identifier embedded in the IBAN.
bankNamestringHuman-readable name of the issuing bank.

API reference

GET /v1/cz/ico

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case IČO numbers from the rare corners.
extremebooleanReturn 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.
invalidbooleanReturn an IČO with a deliberately wrong mod-11 check digit.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/cz/ico
curl https://api.real-fake-data.com/v1/cz/ico

Response fields

FieldTypeDescription
valuestringThe identifier in the requested format (national IČO or VAT).
digitsstringThe canonical, unprefixed 8-digit IČO.

API reference

GET /v1/cz/person

Try on playground

Returns 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

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD.
caseStrictbooleanDefaults to true (proper casing). Set false to deliberately mangle the casing of name and surname; initials stay proper uppercase.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias the number and name shape toward their rarely-exercised corners.
extremebooleanReturn 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.
invalidbooleanReturn a person whose rodné číslo has a deliberately wrong check value.
olderThanintegerMinimum age in years at request time.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
sex"m" | "f"Encoded sex: "m" or "f".
youngerThanintegerMaximum age in years at request time.

Request

GET /v1/cz/person
curl https://api.real-fake-data.com/v1/cz/person

Response fields

FieldTypeDescription
namestringGiven (first) name(s).
surnamestringSurname.
initialsstringUppercase initials of name and surname, no dots.
birthDatestringThe birth date, ISO `YYYY-MM-DD`.
rodneCislostringThe matching rodné číslo.

API reference

GET /v1/cz/person-name

Try on playground

Returns 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

ParameterTypeDescription
caseStrictbooleanDefaults 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.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias toward edge-case name shapes (second given names, double surnames, short names).
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger 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

GET /v1/cz/person-name
curl https://api.real-fake-data.com/v1/cz/person-name

Response fields

FieldTypeDescription
namestringGiven (first) name(s), in the local script, agreeing with the reported sex.
surnamestringSurname in the form matching the sex (inflected where the language requires it).
initialsstringUppercase 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict to edge-case offerings (price-band extremes, unusual units, long names).
extremebooleanReturn 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.
industryNamestringFull-text filter: keep offerings whose localized industry label contains this.
invalidbooleanReturn 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.
offeringNamestringFull-text filter: keep offerings whose localized name contains this.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
type"product" | "service"Restrict to products or services. Omit for both.

Request

GET /v1/cz/offering
curl https://api.real-fake-data.com/v1/cz/offering

Response fields

FieldTypeDescription
valuestringThe offering name in the resolved language.
offeringNamestringThe full offering name (alias of `value`).
kind"product" | "service"Whether it is a good or a rendered service.
unitstringThe unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …).
priceintegerA single plausible price, in EUR minor units (cents).
currency"EUR"Currency of `price`; always EUR.
industryCodestringNACE Rev. 2.1 code of the offering’s industry.
industryNamestringThe localized industry label in the resolved language.
languagestringBCP-47 subtag used for this record’s names.

API reference

GET /v1/cz/rodne-cislo

Try on playground

Returns 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

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case values.
extremebooleanReturn 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.
invalidbooleanReturn a rodné číslo that fails the divisible-by-11 check; date/sex stay valid.
olderThanintegerMinimum age in years at request time.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
sex"m" | "f"Encoded sex: "m" or "f".
youngerThanintegerMaximum age in years at request time.

Request

GET /v1/cz/rodne-cislo
curl https://api.real-fake-data.com/v1/cz/rodne-cislo

Response fields

FieldTypeDescription
valuestringThe rodné číslo in the requested format (plain or `YYMMDD/SSSC`).
digitsstringThe canonical 10-digit rodné číslo.
birthDatestringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case plates from the rare corners of the format.
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
regionstringRestrict a standard/extended plate to a named kraj (e.g. Prague, South Moravia). An unknown kraj is a 400; ignored for region-agnostic types.
seedintegerInteger 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

GET /v1/cz/vehicle-registration
curl https://api.real-fake-data.com/v1/cz/vehicle-registration

Response fields

FieldTypeDescription
valuestringThe plate in the requested format, e.g. "1A2 3456".
type"standard" | "extended" | "custom" | "motorcycle" | "diplomatic" | "historic" | "electric" | "military"Which kind of plate this is.
regionoptionalstringFull 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case values from the rare corners.
extremebooleanReturn 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.
invalidbooleanCorrupt 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.
seedintegerInteger 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

GET /v1/dk/company
curl https://api.real-fake-data.com/v1/dk/company

Response fields

FieldTypeDescription
namestringThe full company name, including any prefix and legal form.
legalFormstringThe appended legal form, or `null` when none was added.
cvrstringThe matching 8-digit CVR number.

API reference

GET /v1/dk/company-name

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case names (punctuation-heavy families, long/rare forms).
extremebooleanReturn 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.
invalidbooleanReturn 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.
seedintegerInteger 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

GET /v1/dk/company-name
curl https://api.real-fake-data.com/v1/dk/company-name

Response fields

FieldTypeDescription
valuestringThe full company name, including any prefix and legal form.
legalFormstringThe 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 playground

Returns 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

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\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).
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case values.
extremebooleanReturn 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`.
invalidbooleanReturn a CPR with a deliberately wrong mod-11 check; date/sex stay valid.
olderThanintegerMinimum age in years at request time.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
sex"m" | "f"Encoded sex: "m" or "f".
youngerThanintegerMaximum age in years at request time.

Request

GET /v1/dk/cpr
curl https://api.real-fake-data.com/v1/dk/cpr

Response fields

FieldTypeDescription
valuestringThe CPR rendered in the requested format (plain or `DDMMYY-SSSS`).
digitsstringThe canonical 10-digit CPR.
birthDatestringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case CVRs from the rare corners.
extremebooleanReturn 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.
invalidbooleanReturn a CVR with a deliberately wrong mod-11 check digit.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/dk/cvr
curl https://api.real-fake-data.com/v1/dk/cvr

Response fields

FieldTypeDescription
valuestringThe identifier in the requested format (national or VAT).
digitsstringThe canonical, unprefixed 8-digit CVR.

API reference

GET /v1/dk/email

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
domainstringpattern ^[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.
edgebooleanRestrict output to edge-case addresses from the rare corners of the format.
exoticbooleanAllow rarer RFC-valid local-part characters (%, =, ~). Off by default.
extremebooleanReturn 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.
invalidbooleanReturn 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.
plusTagstringpattern ^[A-Za-z0-9_-]+$Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/dk/email
curl https://api.real-fake-data.com/v1/dk/email

Response fields

FieldTypeDescription
valuestringThe full email address, e.g. "anna.schmidt+news@mueller-bau.de".
localPartstringThe part before the `@`, including any plus tag.
domainstringThe 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.
companystringThe company name a corporate domain or company local-part was derived from, or `null`.
plusTagstringThe plus-addressing tag, or `null` when none.

API reference

GET /v1/dk/iban

Try on playground

Returns 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

ParameterTypeDescription
bankCodestringPin the issuing bank by its 4-digit bank code. Mutually exclusive with bankName.
bankNamestringPin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case IBANs from the rare corners of the format.
extremebooleanReturn 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.
invalidbooleanReturn an IBAN with deliberately wrong check digits, for testing validators.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/dk/iban
curl https://api.real-fake-data.com/v1/dk/iban

Response fields

FieldTypeDescription
valuestringThe IBAN in the requested format.
electronicFormatstringThe space-free electronic form of the IBAN.
bankCodestringThe bank identifier embedded in the IBAN.
bankNamestringHuman-readable name of the issuing bank.

API reference

GET /v1/dk/person

Try on playground

Returns 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

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD.
caseStrictbooleanDefaults 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).
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case values.
extremebooleanReturn 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`.
invalidbooleanReturn a CPR with a deliberately wrong mod-11 check; date/sex stay valid.
olderThanintegerMinimum age in years at request time.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
sex"m" | "f"Encoded sex: "m" or "f".
youngerThanintegerMaximum age in years at request time.

Request

GET /v1/dk/person
curl https://api.real-fake-data.com/v1/dk/person

Response fields

FieldTypeDescription
namestringGiven (first) name(s), agreeing with the encoded sex.
surnamestringSurname, e.g. `Nielsen`.
initialsstringUppercase initials of name and surname, no dots, e.g. `AN`.
birthDatestringThe birth date, ISO `YYYY-MM-DD`.
cprstringThe matching CPR, rendered per the requested format.

API reference

GET /v1/dk/person-name

Try on playground

Returns 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

ParameterTypeDescription
caseStrictbooleanDefaults 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.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias toward edge-case name shapes (second given names, double surnames, short names).
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger 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

GET /v1/dk/person-name
curl https://api.real-fake-data.com/v1/dk/person-name

Response fields

FieldTypeDescription
namestringGiven (first) name(s), in the local script, agreeing with the reported sex.
surnamestringSurname in the form matching the sex (inflected where the language requires it).
initialsstringUppercase 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict to edge-case offerings (price-band extremes, unusual units, long names).
extremebooleanReturn 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.
industryNamestringFull-text filter: keep offerings whose localized industry label contains this.
invalidbooleanReturn 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.
offeringNamestringFull-text filter: keep offerings whose localized name contains this.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
type"product" | "service"Restrict to products or services. Omit for both.

Request

GET /v1/dk/offering
curl https://api.real-fake-data.com/v1/dk/offering

Response fields

FieldTypeDescription
valuestringThe offering name in the resolved language.
offeringNamestringThe full offering name (alias of `value`).
kind"product" | "service"Whether it is a good or a rendered service.
unitstringThe unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …).
priceintegerA single plausible price, in EUR minor units (cents).
currency"EUR"Currency of `price`; always EUR.
industryCodestringNACE Rev. 2.1 code of the offering’s industry.
industryNamestringThe localized industry label in the resolved language.
languagestringBCP-47 subtag used for this record’s names.

API reference

GET /v1/dk/vehicle-registration

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict 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.
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger 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

GET /v1/dk/vehicle-registration
curl https://api.real-fake-data.com/v1/dk/vehicle-registration

Response fields

FieldTypeDescription
valuestringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case BSNs from the rare corners.
extremebooleanReturn 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.
invalidbooleanReturn a BSN with a deliberately wrong elfproef check digit.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/nl/bsn
curl https://api.real-fake-data.com/v1/nl/bsn

Response fields

FieldTypeDescription
valuestringThe BSN rendered as a 9-digit string.
digitsstringThe canonical 9-digit BSN.

API reference

GET /v1/nl/btw-id

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case btw-ids from the rare corners.
extremebooleanReturn 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.
invalidbooleanReturn a btw-id that deliberately fails validation.
seedintegerInteger 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

GET /v1/nl/btw-id
curl https://api.real-fake-data.com/v1/nl/btw-id

Response fields

FieldTypeDescription
valuestringThe full btw-id, e.g. `NL123456789B01`.
digitsstringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case values from the rare corners.
extremebooleanReturn 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.
invalidbooleanCorrupt 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.
seedintegerInteger 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

GET /v1/nl/company
curl https://api.real-fake-data.com/v1/nl/company

Response fields

FieldTypeDescription
namestringThe full company name, including any prefix and legal form.
legalFormstringThe appended legal form, or `null` when none was added.
kvkstringThe matching 8-digit KvK number.
rsinstringThe matching 9-digit RSIN.
btwIdstringThe matching btw-id (VAT number), modern NL…B.. form.

API reference

GET /v1/nl/company-name

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case names (punctuation-heavy families, long/rare forms).
extremebooleanReturn 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.
invalidbooleanReturn 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.
seedintegerInteger 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

GET /v1/nl/company-name
curl https://api.real-fake-data.com/v1/nl/company-name

Response fields

FieldTypeDescription
valuestringThe full company name, including any prefix and legal form.
legalFormstringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
domainstringpattern ^[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.
edgebooleanRestrict output to edge-case addresses from the rare corners of the format.
exoticbooleanAllow rarer RFC-valid local-part characters (%, =, ~). Off by default.
extremebooleanReturn 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.
invalidbooleanReturn 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.
plusTagstringpattern ^[A-Za-z0-9_-]+$Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/nl/email
curl https://api.real-fake-data.com/v1/nl/email

Response fields

FieldTypeDescription
valuestringThe full email address, e.g. "anna.schmidt+news@mueller-bau.de".
localPartstringThe part before the `@`, including any plus tag.
domainstringThe 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.
companystringThe company name a corporate domain or company local-part was derived from, or `null`.
plusTagstringThe plus-addressing tag, or `null` when none.

API reference

GET /v1/nl/iban

Try on playground

Returns 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

ParameterTypeDescription
bankCodestringPin the issuing bank by its 4-letter bank code. Mutually exclusive with bankName.
bankNamestringPin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case IBANs from the rare corners of the format.
extremebooleanReturn 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.
invalidbooleanReturn an IBAN with deliberately wrong check digits, for testing validators.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/nl/iban
curl https://api.real-fake-data.com/v1/nl/iban

Response fields

FieldTypeDescription
valuestringThe IBAN in the requested format.
electronicFormatstringThe space-free electronic form of the IBAN.
bankCodestringThe bank identifier embedded in the IBAN.
bankNamestringHuman-readable name of the issuing bank.

API reference

GET /v1/nl/kvk

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case KvK numbers from the rare corners.
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/nl/kvk
curl https://api.real-fake-data.com/v1/nl/kvk

Response fields

FieldTypeDescription
valuestringThe KvK number rendered as an 8-digit string.
digitsstringThe canonical 8-digit KvK number.

API reference

GET /v1/nl/person

Try on playground

Returns 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

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD.
caseStrictbooleanDefaults 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.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict the BSN to edge-case values and bias the name shape.
extremebooleanReturn 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.
invalidbooleanReturn a person whose BSN has a deliberately wrong elfproef check digit.
olderThanintegerMinimum age in years at request time.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
sex"m" | "f"Encoded sex: "m" or "f".
youngerThanintegerMaximum age in years at request time.

Request

GET /v1/nl/person
curl https://api.real-fake-data.com/v1/nl/person

Response fields

FieldTypeDescription
namestringGiven (first) name(s).
surnamestringSurname, e.g. `de Vries`.
initialsstringUppercase initials of name and surname, no dots, e.g. `DV`.
birthDatestringThe birth date, ISO `YYYY-MM-DD` (independent of the BSN).
bsnstringThe matching 9-digit BSN (Burgerservicenummer).

API reference

GET /v1/nl/person-name

Try on playground

Returns 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

ParameterTypeDescription
caseStrictbooleanDefaults 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.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias toward edge-case name shapes (second given names, double surnames, short names).
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger 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

GET /v1/nl/person-name
curl https://api.real-fake-data.com/v1/nl/person-name

Response fields

FieldTypeDescription
namestringGiven (first) name(s), in the local script, agreeing with the reported sex.
surnamestringSurname in the form matching the sex (inflected where the language requires it).
initialsstringUppercase 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict to edge-case offerings (price-band extremes, unusual units, long names).
extremebooleanReturn 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.
industryNamestringFull-text filter: keep offerings whose localized industry label contains this.
invalidbooleanReturn 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.
offeringNamestringFull-text filter: keep offerings whose localized name contains this.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
type"product" | "service"Restrict to products or services. Omit for both.

Request

GET /v1/nl/offering
curl https://api.real-fake-data.com/v1/nl/offering

Response fields

FieldTypeDescription
valuestringThe offering name in the resolved language.
offeringNamestringThe full offering name (alias of `value`).
kind"product" | "service"Whether it is a good or a rendered service.
unitstringThe unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …).
priceintegerA single plausible price, in EUR minor units (cents).
currency"EUR"Currency of `price`; always EUR.
industryCodestringNACE Rev. 2.1 code of the offering’s industry.
industryNamestringThe localized industry label in the resolved language.
languagestringBCP-47 subtag used for this record’s names.

API reference

GET /v1/nl/rsin

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case RSINs from the rare corners.
extremebooleanReturn 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.
invalidbooleanReturn an RSIN with a deliberately wrong elfproef check digit.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/nl/rsin
curl https://api.real-fake-data.com/v1/nl/rsin

Response fields

FieldTypeDescription
valuestringThe RSIN rendered as a 9-digit string.
digitsstringThe canonical 9-digit RSIN.

API reference

GET /v1/nl/vehicle-registration

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict 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.
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
sidecodeintegerPin 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

GET /v1/nl/vehicle-registration
curl https://api.real-fake-data.com/v1/nl/vehicle-registration

Response fields

FieldTypeDescription
valuestringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case values from the rare corners.
extremebooleanReturn 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.
invalidbooleanCorrupt 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.
seedintegerInteger 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

GET /v1/ee/company
curl https://api.real-fake-data.com/v1/ee/company

Response fields

FieldTypeDescription
namestringThe full company name, including any prefix and legal form.
legalFormstringThe appended legal form, or `null` when none was added.
registrikoodstringThe matching registrikood identifier.
kmkrstringThe matching kmkr identifier.

API reference

GET /v1/ee/company-name

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case names (punctuation-heavy families, long/rare forms).
extremebooleanReturn 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.
invalidbooleanReturn 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.
seedintegerInteger 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

GET /v1/ee/company-name
curl https://api.real-fake-data.com/v1/ee/company-name

Response fields

FieldTypeDescription
valuestringThe full company name, including any prefix and legal form.
legalFormstringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
domainstringpattern ^[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.
edgebooleanRestrict output to edge-case addresses from the rare corners of the format.
exoticbooleanAllow rarer RFC-valid local-part characters (%, =, ~). Off by default.
extremebooleanReturn 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.
invalidbooleanReturn 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.
plusTagstringpattern ^[A-Za-z0-9_-]+$Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/ee/email
curl https://api.real-fake-data.com/v1/ee/email

Response fields

FieldTypeDescription
valuestringThe full email address, e.g. "anna.schmidt+news@mueller-bau.de".
localPartstringThe part before the `@`, including any plus tag.
domainstringThe 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.
companystringThe company name a corporate domain or company local-part was derived from, or `null`.
plusTagstringThe plus-addressing tag, or `null` when none.

API reference

GET /v1/ee/iban

Try on playground

Returns 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

ParameterTypeDescription
bankCodestringPin the issuing bank by its 2-digit bank code. Mutually exclusive with bankName.
bankNamestringPin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case IBANs from the rare corners of the format.
extremebooleanReturn 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.
invalidbooleanReturn an IBAN with deliberately wrong check digits, for testing validators.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/ee/iban
curl https://api.real-fake-data.com/v1/ee/iban

Response fields

FieldTypeDescription
valuestringThe IBAN in the requested format.
electronicFormatstringThe space-free electronic form of the IBAN.
bankCodestringThe bank identifier embedded in the IBAN.
bankNamestringHuman-readable name of the issuing bank.

API reference

GET /v1/ee/isikukood

Try on playground

Returns 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

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case values.
extremebooleanReturn 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.
invalidbooleanReturn an isikukood with a deliberately wrong mod-11 check digit; date/sex stay valid.
olderThanintegerMinimum age in years at request time.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
sex"m" | "f"Encoded sex: "m" or "f".
youngerThanintegerMaximum age in years at request time.

Request

GET /v1/ee/isikukood
curl https://api.real-fake-data.com/v1/ee/isikukood

Response fields

FieldTypeDescription
valuestringThe isikukood in the requested form.
digitsstringThe canonical 11-digit isikukood.
birthDatestringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case KMKRs from the rare corners.
extremebooleanReturn 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.
invalidbooleanReturn a KMKR with a deliberately wrong check digit.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/ee/kmkr
curl https://api.real-fake-data.com/v1/ee/kmkr

Response fields

FieldTypeDescription
valuestringThe identifier in the requested format (national or VAT).
digitsstringThe canonical, unprefixed 9-digit KMKR.

API reference

GET /v1/ee/person

Try on playground

Returns 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

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD.
caseStrictbooleanDefaults to true (proper casing). Set false to deliberately mangle the casing of name and surname; initials stay proper uppercase.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias the number and name shape toward their rarely-exercised corners.
extremebooleanReturn 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.
invalidbooleanReturn a person whose isikukood has a deliberately wrong check value.
olderThanintegerMinimum age in years at request time.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
sex"m" | "f"Encoded sex: "m" or "f".
youngerThanintegerMaximum age in years at request time.

Request

GET /v1/ee/person
curl https://api.real-fake-data.com/v1/ee/person

Response fields

FieldTypeDescription
namestringGiven (first) name(s).
surnamestringSurname.
initialsstringUppercase initials of name and surname, no dots.
birthDatestringThe birth date, ISO `YYYY-MM-DD`.
isikukoodstringThe matching isikukood.

API reference

GET /v1/ee/person-name

Try on playground

Returns 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

ParameterTypeDescription
caseStrictbooleanDefaults 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.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias toward edge-case name shapes (second given names, double surnames, short names).
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger 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

GET /v1/ee/person-name
curl https://api.real-fake-data.com/v1/ee/person-name

Response fields

FieldTypeDescription
namestringGiven (first) name(s), in the local script, agreeing with the reported sex.
surnamestringSurname in the form matching the sex (inflected where the language requires it).
initialsstringUppercase 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict to edge-case offerings (price-band extremes, unusual units, long names).
extremebooleanReturn 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.
industryNamestringFull-text filter: keep offerings whose localized industry label contains this.
invalidbooleanReturn 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.
offeringNamestringFull-text filter: keep offerings whose localized name contains this.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
type"product" | "service"Restrict to products or services. Omit for both.

Request

GET /v1/ee/offering
curl https://api.real-fake-data.com/v1/ee/offering

Response fields

FieldTypeDescription
valuestringThe offering name in the resolved language.
offeringNamestringThe full offering name (alias of `value`).
kind"product" | "service"Whether it is a good or a rendered service.
unitstringThe unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …).
priceintegerA single plausible price, in EUR minor units (cents).
currency"EUR"Currency of `price`; always EUR.
industryCodestringNACE Rev. 2.1 code of the offering’s industry.
industryNamestringThe localized industry label in the resolved language.
languagestringBCP-47 subtag used for this record’s names.

API reference

GET /v1/ee/registrikood

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case registrikoods from the rare corners.
extremebooleanReturn 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.
invalidbooleanReturn a registrikood with a deliberately wrong mod-11 check digit.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/ee/registrikood
curl https://api.real-fake-data.com/v1/ee/registrikood

Response fields

FieldTypeDescription
valuestringThe registrikood in the requested form.
digitsstringThe canonical 8-digit registrikood.

API reference

GET /v1/ee/vehicle-registration

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict 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.
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger 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

GET /v1/ee/vehicle-registration
curl https://api.real-fake-data.com/v1/ee/vehicle-registration

Response fields

FieldTypeDescription
valuestringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case values from the rare corners.
extremebooleanReturn 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.
invalidbooleanCorrupt 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.
seedintegerInteger 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

GET /v1/fi/company
curl https://api.real-fake-data.com/v1/fi/company

Response fields

FieldTypeDescription
namestringThe full company name, including any prefix and legal form.
legalFormstringThe appended legal form, or `null` when none was added.
yTunnusstringThe matching y-tunnus identifier.

API reference

GET /v1/fi/company-name

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case names (punctuation-heavy families, long/rare forms).
extremebooleanReturn 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.
invalidbooleanReturn 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.
seedintegerInteger 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

GET /v1/fi/company-name
curl https://api.real-fake-data.com/v1/fi/company-name

Response fields

FieldTypeDescription
valuestringThe full company name, including any prefix and legal form.
legalFormstringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
domainstringpattern ^[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.
edgebooleanRestrict output to edge-case addresses from the rare corners of the format.
exoticbooleanAllow rarer RFC-valid local-part characters (%, =, ~). Off by default.
extremebooleanReturn 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.
invalidbooleanReturn 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.
plusTagstringpattern ^[A-Za-z0-9_-]+$Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/fi/email
curl https://api.real-fake-data.com/v1/fi/email

Response fields

FieldTypeDescription
valuestringThe full email address, e.g. "anna.schmidt+news@mueller-bau.de".
localPartstringThe part before the `@`, including any plus tag.
domainstringThe 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.
companystringThe company name a corporate domain or company local-part was derived from, or `null`.
plusTagstringThe plus-addressing tag, or `null` when none.

API reference

GET /v1/fi/henkilotunnus

Try on playground

Returns 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

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case values.
extremebooleanReturn 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.
invalidbooleanReturn a HETU with a deliberately wrong check character; date/sex stay valid.
olderThanintegerMinimum age in years at request time.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
sex"m" | "f"Encoded sex: "m" or "f".
youngerThanintegerMaximum age in years at request time.

Request

GET /v1/fi/henkilotunnus
curl https://api.real-fake-data.com/v1/fi/henkilotunnus

Response fields

FieldTypeDescription
valuestringThe canonical 11-character HETU, e.g. `131052-308T`.
digitsstringThe 9-digit `DDMMYYNNN` the check character is computed from.
birthDatestringThe 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 playground

Returns 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

ParameterTypeDescription
bankCodestringPin the issuing bank by its 6-digit bank code. Mutually exclusive with bankName.
bankNamestringPin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case IBANs from the rare corners of the format.
extremebooleanReturn 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.
invalidbooleanReturn an IBAN with deliberately wrong check digits, for testing validators.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/fi/iban
curl https://api.real-fake-data.com/v1/fi/iban

Response fields

FieldTypeDescription
valuestringThe IBAN in the requested format.
electronicFormatstringThe space-free electronic form of the IBAN.
bankCodestringThe bank identifier embedded in the IBAN.
bankNamestringHuman-readable name of the issuing bank.

API reference

GET /v1/fi/person

Try on playground

Returns 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

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD.
caseStrictbooleanDefaults to true (proper casing). Set false to deliberately mangle the casing of name and surname; initials stay proper uppercase.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias the number and name shape toward their rarely-exercised corners.
extremebooleanReturn 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.
invalidbooleanReturn a person whose HETU has a deliberately wrong check value.
olderThanintegerMinimum age in years at request time.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
sex"m" | "f"Encoded sex: "m" or "f".
youngerThanintegerMaximum age in years at request time.

Request

GET /v1/fi/person
curl https://api.real-fake-data.com/v1/fi/person

Response fields

FieldTypeDescription
namestringGiven (first) name(s).
surnamestringSurname.
initialsstringUppercase initials of name and surname, no dots.
birthDatestringThe birth date, ISO `YYYY-MM-DD`.
henkilotunnusstringThe matching HETU.

API reference

GET /v1/fi/person-name

Try on playground

Returns 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

ParameterTypeDescription
caseStrictbooleanDefaults 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.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias toward edge-case name shapes (second given names, double surnames, short names).
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger 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

GET /v1/fi/person-name
curl https://api.real-fake-data.com/v1/fi/person-name

Response fields

FieldTypeDescription
namestringGiven (first) name(s), in the local script, agreeing with the reported sex.
surnamestringSurname in the form matching the sex (inflected where the language requires it).
initialsstringUppercase 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict to edge-case offerings (price-band extremes, unusual units, long names).
extremebooleanReturn 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.
industryNamestringFull-text filter: keep offerings whose localized industry label contains this.
invalidbooleanReturn 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.
offeringNamestringFull-text filter: keep offerings whose localized name contains this.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
type"product" | "service"Restrict to products or services. Omit for both.

Request

GET /v1/fi/offering
curl https://api.real-fake-data.com/v1/fi/offering

Response fields

FieldTypeDescription
valuestringThe offering name in the resolved language.
offeringNamestringThe full offering name (alias of `value`).
kind"product" | "service"Whether it is a good or a rendered service.
unitstringThe unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …).
priceintegerA single plausible price, in EUR minor units (cents).
currency"EUR"Currency of `price`; always EUR.
industryCodestringNACE Rev. 2.1 code of the offering’s industry.
industryNamestringThe localized industry label in the resolved language.
languagestringBCP-47 subtag used for this record’s names.

API reference

GET /v1/fi/vehicle-registration

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict 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.
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger 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

GET /v1/fi/vehicle-registration
curl https://api.real-fake-data.com/v1/fi/vehicle-registration

Response fields

FieldTypeDescription
valuestringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case Y-tunnukset from the rare corners.
extremebooleanReturn 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.
invalidbooleanReturn a Y-tunnus with a deliberately wrong mod-11 check digit.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/fi/y-tunnus
curl https://api.real-fake-data.com/v1/fi/y-tunnus

Response fields

FieldTypeDescription
valuestringThe identifier in the requested format (national or VAT).
digitsstringThe canonical, unhyphenated 8-digit Y-tunnus.

API reference

GET /v1/fr/company

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case values from the rare corners.
extremebooleanReturn 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.
invalidbooleanCorrupt 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.
seedintegerInteger 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

GET /v1/fr/company
curl https://api.real-fake-data.com/v1/fr/company

Response fields

FieldTypeDescription
namestringThe full company name, including any prefix and legal form.
legalFormstringThe appended legal form, or `null` when none was added.
sirenstringThe matching siren identifier.

API reference

GET /v1/fr/company-name

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case names (punctuation-heavy families, long/rare forms).
extremebooleanReturn 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.
invalidbooleanReturn 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.
seedintegerInteger 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

GET /v1/fr/company-name
curl https://api.real-fake-data.com/v1/fr/company-name

Response fields

FieldTypeDescription
valuestringThe full company name, including any prefix and legal form.
legalFormstringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
domainstringpattern ^[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.
edgebooleanRestrict output to edge-case addresses from the rare corners of the format.
exoticbooleanAllow rarer RFC-valid local-part characters (%, =, ~). Off by default.
extremebooleanReturn 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.
invalidbooleanReturn 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.
plusTagstringpattern ^[A-Za-z0-9_-]+$Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/fr/email
curl https://api.real-fake-data.com/v1/fr/email

Response fields

FieldTypeDescription
valuestringThe full email address, e.g. "anna.schmidt+news@mueller-bau.de".
localPartstringThe part before the `@`, including any plus tag.
domainstringThe 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.
companystringThe company name a corporate domain or company local-part was derived from, or `null`.
plusTagstringThe plus-addressing tag, or `null` when none.

API reference

GET /v1/fr/iban

Try on playground

Returns 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

ParameterTypeDescription
bankCodestringPin the issuing bank by its 5-digit bank code. Mutually exclusive with bankName.
bankNamestringPin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case IBANs from the rare corners of the format.
extremebooleanReturn 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.
invalidbooleanReturn an IBAN with deliberately wrong check digits, for testing validators.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/fr/iban
curl https://api.real-fake-data.com/v1/fr/iban

Response fields

FieldTypeDescription
valuestringThe IBAN in the requested format.
electronicFormatstringThe space-free electronic form of the IBAN.
bankCodestringThe bank identifier embedded in the IBAN.
bankNamestringHuman-readable name of the issuing bank.

API reference

GET /v1/fr/nir

Try on playground

Returns 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

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case values.
extremebooleanReturn 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.
invalidbooleanReturn a NIR with a deliberately wrong control key; sex/year/month stay valid.
olderThanintegerMinimum age in years at request time.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
sex"m" | "f"Encoded sex: "m" or "f".
youngerThanintegerMaximum age in years at request time.

Request

GET /v1/fr/nir
curl https://api.real-fake-data.com/v1/fr/nir

Response fields

FieldTypeDescription
valuestringThe 15-character NIR.
digitsstringThe canonical 15-character NIR.
sex"m" | "f"Encoded sex: `m` (1) or `f` (2).
birthYearintegerThe full four-digit birth year.
birthMonthintegerThe birth month, 1–12.

API reference

GET /v1/fr/person

Try on playground

Returns 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

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD.
caseStrictbooleanDefaults to true (proper casing). Set false to deliberately mangle the casing of name and surname; initials stay proper uppercase.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias the number and name shape toward their rarely-exercised corners.
extremebooleanReturn 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.
invalidbooleanReturn a person whose NIR has a deliberately wrong check value.
olderThanintegerMinimum age in years at request time.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
sex"m" | "f"Encoded sex: "m" or "f".
youngerThanintegerMaximum age in years at request time.

Request

GET /v1/fr/person
curl https://api.real-fake-data.com/v1/fr/person

Response fields

FieldTypeDescription
namestringGiven (first) name(s).
surnamestringSurname.
initialsstringUppercase initials of name and surname, no dots.
birthDatestringThe birth date, ISO `YYYY-MM-DD`.
nirstringThe matching NIR.

API reference

GET /v1/fr/person-name

Try on playground

Returns 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

ParameterTypeDescription
caseStrictbooleanDefaults 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.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias toward edge-case name shapes (second given names, double surnames, short names).
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger 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

GET /v1/fr/person-name
curl https://api.real-fake-data.com/v1/fr/person-name

Response fields

FieldTypeDescription
namestringGiven (first) name(s), in the local script, agreeing with the reported sex.
surnamestringSurname in the form matching the sex (inflected where the language requires it).
initialsstringUppercase 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict to edge-case offerings (price-band extremes, unusual units, long names).
extremebooleanReturn 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.
industryNamestringFull-text filter: keep offerings whose localized industry label contains this.
invalidbooleanReturn 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.
offeringNamestringFull-text filter: keep offerings whose localized name contains this.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
type"product" | "service"Restrict to products or services. Omit for both.

Request

GET /v1/fr/offering
curl https://api.real-fake-data.com/v1/fr/offering

Response fields

FieldTypeDescription
valuestringThe offering name in the resolved language.
offeringNamestringThe full offering name (alias of `value`).
kind"product" | "service"Whether it is a good or a rendered service.
unitstringThe unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …).
priceintegerA single plausible price, in EUR minor units (cents).
currency"EUR"Currency of `price`; always EUR.
industryCodestringNACE Rev. 2.1 code of the offering’s industry.
industryNamestringThe localized industry label in the resolved language.
languagestringBCP-47 subtag used for this record’s names.

API reference

GET /v1/fr/siren

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case SIRENs from the rare corners.
extremebooleanReturn 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.
invalidbooleanReturn a SIREN with a deliberately wrong Luhn check digit.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/fr/siren
curl https://api.real-fake-data.com/v1/fr/siren

Response fields

FieldTypeDescription
valuestringThe identifier in the requested format (SIREN, SIRET, or VAT).
digitsstringThe canonical 9-digit SIREN.

API reference

GET /v1/fr/vehicle-registration

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
departmentstringForce the département to a code or name (e.g. 75, 2A, Paris). Standard plates only.
edgebooleanRestrict 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.
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger 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.
withDepartmentbooleanAttach a random cosmetic département band to a current standard plate.

Request

GET /v1/fr/vehicle-registration
curl https://api.real-fake-data.com/v1/fr/vehicle-registration

Response fields

FieldTypeDescription
valuestringThe 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).
departmentoptionalstringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case values from the rare corners.
extremebooleanReturn 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.
invalidbooleanCorrupt 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.
seedintegerInteger 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

GET /v1/de/company
curl https://api.real-fake-data.com/v1/de/company

Response fields

FieldTypeDescription
namestringThe full company name, including any prefix and legal form.
legalFormstringThe appended legal form, or `null` when none was added.
handelsregisternummerstringThe matching handelsregisternummer identifier.
ustIdnrstringThe matching ust-idnr identifier.
wirtschaftsIdnrstringThe matching wirtschafts-idnr identifier.

API reference

GET /v1/de/company-name

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case names (punctuation-heavy families, long/rare forms).
extremebooleanReturn 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.
invalidbooleanReturn 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.
seedintegerInteger 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

GET /v1/de/company-name
curl https://api.real-fake-data.com/v1/de/company-name

Response fields

FieldTypeDescription
valuestringThe full company name, including any prefix and legal form.
legalFormstringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
domainstringpattern ^[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.
edgebooleanRestrict output to edge-case addresses from the rare corners of the format.
exoticbooleanAllow rarer RFC-valid local-part characters (%, =, ~). Off by default.
extremebooleanReturn 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.
invalidbooleanReturn 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.
plusTagstringpattern ^[A-Za-z0-9_-]+$Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/de/email
curl https://api.real-fake-data.com/v1/de/email

Response fields

FieldTypeDescription
valuestringThe full email address, e.g. "anna.schmidt+news@mueller-bau.de".
localPartstringThe part before the `@`, including any plus tag.
domainstringThe 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.
companystringThe company name a corporate domain or company local-part was derived from, or `null`.
plusTagstringThe plus-addressing tag, or `null` when none.

API reference

GET /v1/de/handelsregisternummer

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number 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).
edgebooleanRestrict output to valid edge-case serials (very low or very high).
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/de/handelsregisternummer
curl https://api.real-fake-data.com/v1/de/handelsregisternummer

Response fields

FieldTypeDescription
valuestringThe full register number, e.g. "HRB 246975".
division"HRA" | "HRB"The register division: HRA or HRB.
courtstringThe keeping court (Amtsgericht), e.g. "Berlin (Charlottenburg)".
numberstringThe sequential serial number (no leading zeros).

API reference

GET /v1/de/iban

Try on playground

Returns 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

ParameterTypeDescription
bankCodestringPin the issuing bank by its 8-digit BLZ. Mutually exclusive with bankName.
bankNamestringPin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case IBANs from the rare corners of the format.
extremebooleanReturn 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.
invalidbooleanReturn an IBAN with deliberately wrong check digits, for testing validators.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/de/iban
curl https://api.real-fake-data.com/v1/de/iban

Response fields

FieldTypeDescription
valuestringThe IBAN in the requested format.
electronicFormatstringThe space-free electronic form of the IBAN.
bankCodestringThe bank identifier embedded in the IBAN.
bankNamestringHuman-readable name of the issuing bank.

API reference

GET /v1/de/person

Try on playground

Returns 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

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD.
caseStrictbooleanDefaults to true (proper casing). Set false to deliberately mangle the casing of name and surname; initials stay proper uppercase.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias the number and name shape toward their rarely-exercised corners.
extremebooleanReturn 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.
invalidbooleanReturn a person whose Steuer-ID has a deliberately wrong check value.
olderThanintegerMinimum age in years at request time.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
sex"m" | "f"Encoded sex: "m" or "f".
youngerThanintegerMaximum age in years at request time.

Request

GET /v1/de/person
curl https://api.real-fake-data.com/v1/de/person

Response fields

FieldTypeDescription
namestringGiven (first) name(s).
surnamestringSurname.
initialsstringUppercase initials of name and surname, no dots.
birthDatestringThe birth date, ISO `YYYY-MM-DD`.
steuerIdstringThe matching Steuer-ID.

API reference

GET /v1/de/person-name

Try on playground

Returns 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

ParameterTypeDescription
caseStrictbooleanDefaults 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.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias toward edge-case name shapes (second given names, double surnames, short names).
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger 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

GET /v1/de/person-name
curl https://api.real-fake-data.com/v1/de/person-name

Response fields

FieldTypeDescription
namestringGiven (first) name(s), in the local script, agreeing with the reported sex.
surnamestringSurname in the form matching the sex (inflected where the language requires it).
initialsstringUppercase 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case document numbers from the rare corners.
extremebooleanReturn 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.
invalidbooleanReturn a document number with a deliberately wrong ICAO 9303 check digit.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/de/personalausweis
curl https://api.real-fake-data.com/v1/de/personalausweis

Response fields

FieldTypeDescription
valuestringThe full 10-character document number.
serialstringThe 9-character serial (no check digit).
checkDigitintegerThe single ICAO 9303 check digit (0–9).

API reference

GET /v1/de/offering

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict to edge-case offerings (price-band extremes, unusual units, long names).
extremebooleanReturn 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.
industryNamestringFull-text filter: keep offerings whose localized industry label contains this.
invalidbooleanReturn 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.
offeringNamestringFull-text filter: keep offerings whose localized name contains this.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
type"product" | "service"Restrict to products or services. Omit for both.

Request

GET /v1/de/offering
curl https://api.real-fake-data.com/v1/de/offering

Response fields

FieldTypeDescription
valuestringThe offering name in the resolved language.
offeringNamestringThe full offering name (alias of `value`).
kind"product" | "service"Whether it is a good or a rendered service.
unitstringThe unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …).
priceintegerA single plausible price, in EUR minor units (cents).
currency"EUR"Currency of `price`; always EUR.
industryCodestringNACE Rev. 2.1 code of the offering’s industry.
industryNamestringThe localized industry label in the resolved language.
languagestringBCP-47 subtag used for this record’s names.

API reference

GET /v1/de/steuer-id

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case Steuer-IdNrs from the rare corners.
extremebooleanReturn 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.
invalidbooleanReturn a Steuer-IdNr with a deliberately wrong ISO 7064 check digit.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/de/steuer-id
curl https://api.real-fake-data.com/v1/de/steuer-id

Response fields

FieldTypeDescription
valuestringThe full 11-digit Steuer-IdNr.
digitsstringThe same 11 digits (no separators).

API reference

GET /v1/de/ust-idnr

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case USt-IdNrs from the rare corners.
extremebooleanReturn 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).
invalidbooleanReturn a USt-IdNr with a deliberately wrong ISO 7064 check digit.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/de/ust-idnr
curl https://api.real-fake-data.com/v1/de/ust-idnr

Response fields

FieldTypeDescription
valuestringThe USt-IdNr in the requested format (VAT or national).
digitsstringThe canonical, unprefixed nine-digit core.

API reference

GET /v1/de/vehicle-registration

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
districtstringForce the district code (Unterscheidungszeichen), e.g. M, HH, GÖ. Umlaut-sensitive; an unknown code is a 400. Ignored for military/diplomatic.
edgebooleanRestrict 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.
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger 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

GET /v1/de/vehicle-registration
curl https://api.real-fake-data.com/v1/de/vehicle-registration

Response fields

FieldTypeDescription
valuestringThe 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.
districtoptionalstringThe Unterscheidungszeichen (1–3 letter district code, e.g. M, HH, GÖ); absent for military/diplomatic.
stateoptionalstringThe Bundesland (federal state) the district code belongs to, e.g. Bayern.
cityoptionalstringThe Stadt or Landkreis whose office issues the code, e.g. München.

API reference

GET /v1/de/wirtschafts-idnr

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case suffixes (smallest and largest).
extremebooleanReturn 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.
invalidbooleanReturn a W-IdNr whose nine-digit core has a deliberately wrong ISO 7064 check digit.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
suffixintegerFive-digit distinguishing suffix as a number (1..99999); rendered zero-padded.

Request

GET /v1/de/wirtschafts-idnr
curl https://api.real-fake-data.com/v1/de/wirtschafts-idnr

Response fields

FieldTypeDescription
valuestringThe full identifier, e.g. "DE123456789-00001".
digitsstringThe canonical nine-digit core (no DE prefix, no suffix).
suffixstringThe five-digit distinguishing suffix, e.g. "00001".

API reference

GET /v1/gr/afm

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case AFMs from the rare corners.
extremebooleanReturn 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.
invalidbooleanReturn an AFM with a deliberately wrong check digit.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/gr/afm
curl https://api.real-fake-data.com/v1/gr/afm

Response fields

FieldTypeDescription
valuestringThe identifier in the requested format (national or VAT).
digitsstringThe canonical, unprefixed 9-digit AFM.

API reference

GET /v1/gr/amka

Try on playground

Returns 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

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case values.
extremebooleanReturn 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.
invalidbooleanReturn an AMKA with a deliberately wrong Luhn check digit; date/sex stay valid.
olderThanintegerMinimum age in years at request time.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
sex"m" | "f"Encoded sex: "m" or "f".
youngerThanintegerMaximum age in years at request time.

Request

GET /v1/gr/amka
curl https://api.real-fake-data.com/v1/gr/amka

Response fields

FieldTypeDescription
valuestringThe canonical 11-digit AMKA.
digitsstringThe 11 AMKA digits, identical to `value`.
birthDatestringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case values from the rare corners.
extremebooleanReturn 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.
invalidbooleanCorrupt the checksummed identifiers, for testing validators.
legalForm"any" | "none" | "Ε.Π.Ε." | "Ι.Κ.Ε." | "Α.Ε." | "Ο.Ε." | "Ε.Ε."Append a specific legal form, "any" for weighted-random, or "none" to omit.
seedintegerInteger 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

GET /v1/gr/company
curl https://api.real-fake-data.com/v1/gr/company

Response fields

FieldTypeDescription
namestringThe full company name, including any prefix and legal form.
legalFormstringThe appended legal form, or `null` when none was added.
afmstringThe matching afm identifier.

API reference

GET /v1/gr/company-name

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case names (punctuation-heavy families, long/rare forms).
extremebooleanReturn 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.
invalidbooleanReturn 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.
seedintegerInteger 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

GET /v1/gr/company-name
curl https://api.real-fake-data.com/v1/gr/company-name

Response fields

FieldTypeDescription
valuestringThe full company name, including any prefix and legal form.
legalFormstringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
domainstringpattern ^[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.
edgebooleanRestrict output to edge-case addresses from the rare corners of the format.
exoticbooleanAllow rarer RFC-valid local-part characters (%, =, ~). Off by default.
extremebooleanReturn 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.
invalidbooleanReturn 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.
plusTagstringpattern ^[A-Za-z0-9_-]+$Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/gr/email
curl https://api.real-fake-data.com/v1/gr/email

Response fields

FieldTypeDescription
valuestringThe full email address, e.g. "anna.schmidt+news@mueller-bau.de".
localPartstringThe part before the `@`, including any plus tag.
domainstringThe 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.
companystringThe company name a corporate domain or company local-part was derived from, or `null`.
plusTagstringThe plus-addressing tag, or `null` when none.

API reference

GET /v1/gr/iban

Try on playground

Returns 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

ParameterTypeDescription
bankCodestringPin the issuing bank by its 3-digit bank code. Mutually exclusive with bankName.
bankNamestringPin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case IBANs from the rare corners of the format.
extremebooleanReturn 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.
invalidbooleanReturn an IBAN with deliberately wrong check digits, for testing validators.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/gr/iban
curl https://api.real-fake-data.com/v1/gr/iban

Response fields

FieldTypeDescription
valuestringThe IBAN in the requested format.
electronicFormatstringThe space-free electronic form of the IBAN.
bankCodestringThe bank identifier embedded in the IBAN.
bankNamestringHuman-readable name of the issuing bank.

API reference

GET /v1/gr/person

Try on playground

Returns 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

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD.
caseStrictbooleanDefaults to true (proper casing). Set false to deliberately mangle the casing of name and surname; initials stay proper uppercase.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias the number and name shape toward their rarely-exercised corners.
extremebooleanReturn 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.
invalidbooleanReturn a person whose AMKA has a deliberately wrong check value.
olderThanintegerMinimum age in years at request time.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
sex"m" | "f"Encoded sex: "m" or "f".
youngerThanintegerMaximum age in years at request time.

Request

GET /v1/gr/person
curl https://api.real-fake-data.com/v1/gr/person

Response fields

FieldTypeDescription
namestringGiven (first) name(s).
surnamestringSurname.
initialsstringUppercase initials of name and surname, no dots.
birthDatestringThe birth date, ISO `YYYY-MM-DD`.
amkastringThe matching AMKA.

API reference

GET /v1/gr/person-name

Try on playground

Returns 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

ParameterTypeDescription
caseStrictbooleanDefaults 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.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias toward edge-case name shapes (second given names, double surnames, short names).
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger 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

GET /v1/gr/person-name
curl https://api.real-fake-data.com/v1/gr/person-name

Response fields

FieldTypeDescription
namestringGiven (first) name(s), in the local script, agreeing with the reported sex.
surnamestringSurname in the form matching the sex (inflected where the language requires it).
initialsstringUppercase 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict to edge-case offerings (price-band extremes, unusual units, long names).
extremebooleanReturn 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.
industryNamestringFull-text filter: keep offerings whose localized industry label contains this.
invalidbooleanReturn 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.
offeringNamestringFull-text filter: keep offerings whose localized name contains this.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
type"product" | "service"Restrict to products or services. Omit for both.

Request

GET /v1/gr/offering
curl https://api.real-fake-data.com/v1/gr/offering

Response fields

FieldTypeDescription
valuestringThe offering name in the resolved language.
offeringNamestringThe full offering name (alias of `value`).
kind"product" | "service"Whether it is a good or a rendered service.
unitstringThe unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …).
priceintegerA single plausible price, in EUR minor units (cents).
currency"EUR"Currency of `price`; always EUR.
industryCodestringNACE Rev. 2.1 code of the offering’s industry.
industryNamestringThe localized industry label in the resolved language.
languagestringBCP-47 subtag used for this record’s names.

API reference

GET /v1/gr/vehicle-registration

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict 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.
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
regionstringPin 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.
seedintegerInteger 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

GET /v1/gr/vehicle-registration
curl https://api.real-fake-data.com/v1/gr/vehicle-registration

Response fields

FieldTypeDescription
valuestringThe 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.
regionoptionalstringThe prefecture (or Athens/Thessaloniki) whose code opens the plate; region-encoding current-era types only.
regionCodeoptionalstringThe 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 playground

Returns 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

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case values.
extremebooleanReturn 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.
invalidbooleanReturn a number with a deliberately wrong mod-11 check digit; the birth date stays valid.
olderThanintegerMinimum age in years at request time.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
youngerThanintegerMaximum age in years at request time.

Request

GET /v1/hu/adoazonosito-jel
curl https://api.real-fake-data.com/v1/hu/adoazonosito-jel

Response fields

FieldTypeDescription
valuestringThe adóazonosító jel as a bare 10-digit string.
digitsstringThe canonical 10-digit number.
birthDatestringThe encoded birth date, ISO `YYYY-MM-DD`.

API reference

GET /v1/hu/adoszam

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case numbers from the rare corners.
extremebooleanReturn 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.
invalidbooleanReturn a number with a deliberately wrong törzsszám check digit.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/hu/adoszam
curl https://api.real-fake-data.com/v1/hu/adoszam

Response fields

FieldTypeDescription
valuestringThe adószám in the requested format (national or VAT).
digitsstringThe canonical 8-digit törzsszám.

API reference

GET /v1/hu/cegjegyzekszam

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case numbers from the rare corners.
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/hu/cegjegyzekszam
curl https://api.real-fake-data.com/v1/hu/cegjegyzekszam

Response fields

FieldTypeDescription
valuestringThe number formatted `BB-CF-NNNNNN`, e.g. `01-09-123456`.
courtintegerThe 2-digit court code (`BB`).
formintegerThe 2-digit company-form code (`CF`).
serialintegerThe 6-digit serial (`NNNNNN`).
digitsstringThe canonical 10-digit number, no separators.

API reference

GET /v1/hu/company

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case values from the rare corners.
extremebooleanReturn 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.
invalidbooleanCorrupt 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.
seedintegerInteger 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

GET /v1/hu/company
curl https://api.real-fake-data.com/v1/hu/company

Response fields

FieldTypeDescription
namestringThe full company name, including any prefix and legal form.
legalFormstringThe appended legal form, or `null` when none was added.
cegjegyzekszamstringThe matching cegjegyzekszam identifier.
adoszamstringThe matching adoszam identifier.

API reference

GET /v1/hu/company-name

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case names (punctuation-heavy families, long/rare forms).
extremebooleanReturn 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.
invalidbooleanReturn 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.
seedintegerInteger 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

GET /v1/hu/company-name
curl https://api.real-fake-data.com/v1/hu/company-name

Response fields

FieldTypeDescription
valuestringThe full company name, including any prefix and legal form.
legalFormstringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
domainstringpattern ^[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.
edgebooleanRestrict output to edge-case addresses from the rare corners of the format.
exoticbooleanAllow rarer RFC-valid local-part characters (%, =, ~). Off by default.
extremebooleanReturn 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.
invalidbooleanReturn 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.
plusTagstringpattern ^[A-Za-z0-9_-]+$Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/hu/email
curl https://api.real-fake-data.com/v1/hu/email

Response fields

FieldTypeDescription
valuestringThe full email address, e.g. "anna.schmidt+news@mueller-bau.de".
localPartstringThe part before the `@`, including any plus tag.
domainstringThe 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.
companystringThe company name a corporate domain or company local-part was derived from, or `null`.
plusTagstringThe plus-addressing tag, or `null` when none.

API reference

GET /v1/hu/iban

Try on playground

Returns 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

ParameterTypeDescription
bankCodestringPin the issuing bank by its 3-digit bank code. Mutually exclusive with bankName.
bankNamestringPin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case IBANs from the rare corners of the format.
extremebooleanReturn 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.
invalidbooleanReturn an IBAN with deliberately wrong check digits, for testing validators.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/hu/iban
curl https://api.real-fake-data.com/v1/hu/iban

Response fields

FieldTypeDescription
valuestringThe IBAN in the requested format.
electronicFormatstringThe space-free electronic form of the IBAN.
bankCodestringThe bank identifier embedded in the IBAN.
bankNamestringHuman-readable name of the issuing bank.

API reference

GET /v1/hu/person

Try on playground

Returns 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

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD.
caseStrictbooleanDefaults to true (proper casing). Set false to deliberately mangle the casing of name and surname; initials stay proper uppercase.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias the number and name shape toward their rarely-exercised corners.
extremebooleanReturn 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.
invalidbooleanReturn a person whose személyi azonosító has a deliberately wrong check value.
olderThanintegerMinimum age in years at request time.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
sex"m" | "f"Encoded sex: "m" or "f".
youngerThanintegerMaximum age in years at request time.

Request

GET /v1/hu/person
curl https://api.real-fake-data.com/v1/hu/person

Response fields

FieldTypeDescription
namestringGiven (first) name(s).
surnamestringSurname.
initialsstringUppercase initials of name and surname, no dots.
birthDatestringThe birth date, ISO `YYYY-MM-DD`.
szemelyiAzonositostringThe matching személyi azonosító.

API reference

GET /v1/hu/person-name

Try on playground

Returns 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

ParameterTypeDescription
caseStrictbooleanDefaults 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.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias toward edge-case name shapes (second given names, double surnames, short names).
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger 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

GET /v1/hu/person-name
curl https://api.real-fake-data.com/v1/hu/person-name

Response fields

FieldTypeDescription
namestringGiven (first) name(s), in the local script, agreeing with the reported sex.
surnamestringSurname in the form matching the sex (inflected where the language requires it).
initialsstringUppercase 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict to edge-case offerings (price-band extremes, unusual units, long names).
extremebooleanReturn 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.
industryNamestringFull-text filter: keep offerings whose localized industry label contains this.
invalidbooleanReturn 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.
offeringNamestringFull-text filter: keep offerings whose localized name contains this.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
type"product" | "service"Restrict to products or services. Omit for both.

Request

GET /v1/hu/offering
curl https://api.real-fake-data.com/v1/hu/offering

Response fields

FieldTypeDescription
valuestringThe offering name in the resolved language.
offeringNamestringThe full offering name (alias of `value`).
kind"product" | "service"Whether it is a good or a rendered service.
unitstringThe unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …).
priceintegerA single plausible price, in EUR minor units (cents).
currency"EUR"Currency of `price`; always EUR.
industryCodestringNACE Rev. 2.1 code of the offering’s industry.
industryNamestringThe localized industry label in the resolved language.
languagestringBCP-47 subtag used for this record’s names.

API reference

GET /v1/hu/szemelyi-azonosito

Try on playground

Returns 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

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case values.
extremebooleanReturn 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.
invalidbooleanReturn a number with a deliberately wrong check digit; sex/birth date stay valid.
olderThanintegerMinimum age in years at request time.
seedintegerInteger 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.
youngerThanintegerMaximum age in years at request time.

Request

GET /v1/hu/szemelyi-azonosito
curl https://api.real-fake-data.com/v1/hu/szemelyi-azonosito

Response fields

FieldTypeDescription
valuestringThe identifier as a bare 11-digit string.
digitsstringThe canonical 11-digit number.
birthDatestringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case TAJs from the rare corners.
extremebooleanReturn 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.
invalidbooleanReturn a TAJ with a deliberately wrong check digit.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/hu/taj
curl https://api.real-fake-data.com/v1/hu/taj

Response fields

FieldTypeDescription
valuestringThe TAJ as a bare 9-digit string.
digitsstringThe canonical 9-digit number.

API reference

GET /v1/hu/vehicle-registration

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict 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.
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger 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

GET /v1/hu/vehicle-registration
curl https://api.real-fake-data.com/v1/hu/vehicle-registration

Response fields

FieldTypeDescription
valuestringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case values from the rare corners.
extremebooleanReturn 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.
invalidbooleanCorrupt 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.
seedintegerInteger 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

GET /v1/ie/company
curl https://api.real-fake-data.com/v1/ie/company

Response fields

FieldTypeDescription
namestringThe full company name, including any prefix and legal form.
legalFormstringThe appended legal form, or `null` when none was added.
crostringThe matching cro identifier.
vatstringThe matching vat identifier.

API reference

GET /v1/ie/company-name

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case names (punctuation-heavy families, long/rare forms).
extremebooleanReturn 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.
invalidbooleanReturn 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.
seedintegerInteger 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

GET /v1/ie/company-name
curl https://api.real-fake-data.com/v1/ie/company-name

Response fields

FieldTypeDescription
valuestringThe full company name, including any prefix and legal form.
legalFormstringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case CRO numbers from the rare corners.
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/ie/cro
curl https://api.real-fake-data.com/v1/ie/cro

Response fields

FieldTypeDescription
valuestringThe CRO number, e.g. `123456`.
digitsstringThe canonical six-digit number, leading zeros preserved.

API reference

GET /v1/ie/email

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
domainstringpattern ^[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.
edgebooleanRestrict output to edge-case addresses from the rare corners of the format.
exoticbooleanAllow rarer RFC-valid local-part characters (%, =, ~). Off by default.
extremebooleanReturn 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.
invalidbooleanReturn 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.
plusTagstringpattern ^[A-Za-z0-9_-]+$Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/ie/email
curl https://api.real-fake-data.com/v1/ie/email

Response fields

FieldTypeDescription
valuestringThe full email address, e.g. "anna.schmidt+news@mueller-bau.de".
localPartstringThe part before the `@`, including any plus tag.
domainstringThe 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.
companystringThe company name a corporate domain or company local-part was derived from, or `null`.
plusTagstringThe plus-addressing tag, or `null` when none.

API reference

GET /v1/ie/iban

Try on playground

Returns 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

ParameterTypeDescription
bankCodestringPin the issuing bank by its 4-letter bank code. Mutually exclusive with bankName.
bankNamestringPin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case IBANs from the rare corners of the format.
extremebooleanReturn 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.
invalidbooleanReturn an IBAN with deliberately wrong check digits, for testing validators.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/ie/iban
curl https://api.real-fake-data.com/v1/ie/iban

Response fields

FieldTypeDescription
valuestringThe IBAN in the requested format.
electronicFormatstringThe space-free electronic form of the IBAN.
bankCodestringThe bank identifier embedded in the IBAN.
bankNamestringHuman-readable name of the issuing bank.

API reference

GET /v1/ie/person

Try on playground

Returns 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

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD.
caseStrictbooleanDefaults to true (proper casing). Set false to deliberately mangle the casing of name and surname; initials stay proper uppercase.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias the number and name shape toward their rarely-exercised corners.
extremebooleanReturn 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.
invalidbooleanReturn a person whose PPSN has a deliberately wrong check value.
olderThanintegerMinimum age in years at request time.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
sex"m" | "f"Encoded sex: "m" or "f".
youngerThanintegerMaximum age in years at request time.

Request

GET /v1/ie/person
curl https://api.real-fake-data.com/v1/ie/person

Response fields

FieldTypeDescription
namestringGiven (first) name(s).
surnamestringSurname.
initialsstringUppercase initials of name and surname, no dots.
birthDatestringThe birth date, ISO `YYYY-MM-DD`.
ppsnstringThe matching PPSN.

API reference

GET /v1/ie/person-name

Try on playground

Returns 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

ParameterTypeDescription
caseStrictbooleanDefaults 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.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias toward edge-case name shapes (second given names, double surnames, short names).
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger 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

GET /v1/ie/person-name
curl https://api.real-fake-data.com/v1/ie/person-name

Response fields

FieldTypeDescription
namestringGiven (first) name(s), in the local script, agreeing with the reported sex.
surnamestringSurname in the form matching the sex (inflected where the language requires it).
initialsstringUppercase 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case PPSNs from the rare corners.
extremebooleanReturn 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.
invalidbooleanReturn a PPSN with a deliberately wrong check letter.
seedintegerInteger 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

GET /v1/ie/ppsn
curl https://api.real-fake-data.com/v1/ie/ppsn

Response fields

FieldTypeDescription
valuestringThe full PPSN, e.g. `1234567FA`.
digitsstringThe canonical seven-digit body.
checkLetterstringThe single check letter.
secondLetteroptionalstringThe trailing second letter, present only in the modern form.

API reference

GET /v1/ie/offering

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict to edge-case offerings (price-band extremes, unusual units, long names).
extremebooleanReturn 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.
industryNamestringFull-text filter: keep offerings whose localized industry label contains this.
invalidbooleanReturn 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.
offeringNamestringFull-text filter: keep offerings whose localized name contains this.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
type"product" | "service"Restrict to products or services. Omit for both.

Request

GET /v1/ie/offering
curl https://api.real-fake-data.com/v1/ie/offering

Response fields

FieldTypeDescription
valuestringThe offering name in the resolved language.
offeringNamestringThe full offering name (alias of `value`).
kind"product" | "service"Whether it is a good or a rendered service.
unitstringThe unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …).
priceintegerA single plausible price, in EUR minor units (cents).
currency"EUR"Currency of `price`; always EUR.
industryCodestringNACE Rev. 2.1 code of the offering’s industry.
industryNamestringThe localized industry label in the resolved language.
languagestringBCP-47 subtag used for this record’s names.

API reference

GET /v1/ie/vat

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case VAT numbers from the rare corners.
extremebooleanReturn 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).
invalidbooleanReturn a VAT number with a deliberately wrong check letter.
seedintegerInteger 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

GET /v1/ie/vat
curl https://api.real-fake-data.com/v1/ie/vat

Response fields

FieldTypeDescription
valuestringThe VAT number in the requested format.
digitsstringThe canonical seven-digit body.

API reference

GET /v1/ie/vehicle-registration

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
countystringForce the county index mark by name (e.g. Dublin, Kerry). An unknown county is a 400.
edgebooleanRestrict 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.
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger 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

GET /v1/ie/vehicle-registration
curl https://api.real-fake-data.com/v1/ie/vehicle-registration

Response fields

FieldTypeDescription
valuestringThe 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.
countyoptionalstringThe county whose index mark heads the plate (Dublin, Cork, Kerry). Absent for temporary-import / vintage, which encode no county.
subregionoptionalstringThe 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 playground

Returns 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

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case values.
extremebooleanReturn 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.
invalidbooleanReturn a code with a deliberately wrong check character; encoded facts stay valid.
namestringThe given name to encode. When omitted, a plausible random name is generated.
olderThanintegerMinimum age in years at request time.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
sex"m" | "f"Encoded sex: "m" or "f".
surnamestringThe surname to encode. When omitted, a plausible random surname is generated.
youngerThanintegerMaximum age in years at request time.

Request

GET /v1/it/codice-fiscale
curl https://api.real-fake-data.com/v1/it/codice-fiscale

Response fields

FieldTypeDescription
valuestringThe full 16-character Codice Fiscale.
surnameCodestringThe 3-letter surname code.
nameCodestringThe 3-letter name code.
birthDatestringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case values from the rare corners.
extremebooleanReturn 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.
invalidbooleanCorrupt 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.
seedintegerInteger 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

GET /v1/it/company
curl https://api.real-fake-data.com/v1/it/company

Response fields

FieldTypeDescription
namestringThe full company name, including any prefix and legal form.
legalFormstringThe appended legal form, or `null` when none was added.
partitaIvastringThe matching partita-iva identifier.

API reference

GET /v1/it/company-name

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case names (punctuation-heavy families, long/rare forms).
extremebooleanReturn 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.
invalidbooleanReturn 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.
seedintegerInteger 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

GET /v1/it/company-name
curl https://api.real-fake-data.com/v1/it/company-name

Response fields

FieldTypeDescription
valuestringThe full company name, including any prefix and legal form.
legalFormstringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
domainstringpattern ^[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.
edgebooleanRestrict output to edge-case addresses from the rare corners of the format.
exoticbooleanAllow rarer RFC-valid local-part characters (%, =, ~). Off by default.
extremebooleanReturn 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.
invalidbooleanReturn 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.
plusTagstringpattern ^[A-Za-z0-9_-]+$Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/it/email
curl https://api.real-fake-data.com/v1/it/email

Response fields

FieldTypeDescription
valuestringThe full email address, e.g. "anna.schmidt+news@mueller-bau.de".
localPartstringThe part before the `@`, including any plus tag.
domainstringThe 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.
companystringThe company name a corporate domain or company local-part was derived from, or `null`.
plusTagstringThe plus-addressing tag, or `null` when none.

API reference

GET /v1/it/iban

Try on playground

Returns 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

ParameterTypeDescription
bankCodestringPin the issuing bank by its 5-digit ABI code. Mutually exclusive with bankName.
bankNamestringPin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case IBANs from the rare corners of the format.
extremebooleanReturn 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.
invalidbooleanReturn an IBAN with deliberately wrong check digits, for testing validators.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/it/iban
curl https://api.real-fake-data.com/v1/it/iban

Response fields

FieldTypeDescription
valuestringThe IBAN in the requested format.
electronicFormatstringThe space-free electronic form of the IBAN.
bankCodestringThe bank identifier embedded in the IBAN.
bankNamestringHuman-readable name of the issuing bank.

API reference

GET /v1/it/partita-iva

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case numbers from the rare corners.
extremebooleanReturn 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.
invalidbooleanReturn a Partita IVA with a deliberately wrong Luhn check digit.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/it/partita-iva
curl https://api.real-fake-data.com/v1/it/partita-iva

Response fields

FieldTypeDescription
valuestringThe Partita IVA in the requested format (national or VAT).
digitsstringThe canonical, unprefixed 11-digit Partita IVA.

API reference

GET /v1/it/person

Try on playground

Returns 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

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD.
caseStrictbooleanDefaults to true (proper casing). Set false to deliberately mangle the casing of name and surname; initials stay proper uppercase.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias the number and name shape toward their rarely-exercised corners.
extremebooleanReturn 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.
invalidbooleanReturn a person whose Codice Fiscale has a deliberately wrong check value.
olderThanintegerMinimum age in years at request time.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
sex"m" | "f"Encoded sex: "m" or "f".
youngerThanintegerMaximum age in years at request time.

Request

GET /v1/it/person
curl https://api.real-fake-data.com/v1/it/person

Response fields

FieldTypeDescription
namestringGiven (first) name(s).
surnamestringSurname.
initialsstringUppercase initials of name and surname, no dots.
birthDatestringThe birth date, ISO `YYYY-MM-DD`.
codiceFiscalestringThe matching Codice Fiscale.

API reference

GET /v1/it/person-name

Try on playground

Returns 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

ParameterTypeDescription
caseStrictbooleanDefaults 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.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias toward edge-case name shapes (second given names, double surnames, short names).
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger 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

GET /v1/it/person-name
curl https://api.real-fake-data.com/v1/it/person-name

Response fields

FieldTypeDescription
namestringGiven (first) name(s), in the local script, agreeing with the reported sex.
surnamestringSurname in the form matching the sex (inflected where the language requires it).
initialsstringUppercase 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict to edge-case offerings (price-band extremes, unusual units, long names).
extremebooleanReturn 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.
industryNamestringFull-text filter: keep offerings whose localized industry label contains this.
invalidbooleanReturn 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.
offeringNamestringFull-text filter: keep offerings whose localized name contains this.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
type"product" | "service"Restrict to products or services. Omit for both.

Request

GET /v1/it/offering
curl https://api.real-fake-data.com/v1/it/offering

Response fields

FieldTypeDescription
valuestringThe offering name in the resolved language.
offeringNamestringThe full offering name (alias of `value`).
kind"product" | "service"Whether it is a good or a rendered service.
unitstringThe unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …).
priceintegerA single plausible price, in EUR minor units (cents).
currency"EUR"Currency of `price`; always EUR.
industryCodestringNACE Rev. 2.1 code of the offering’s industry.
industryNamestringThe localized industry label in the resolved language.
languagestringBCP-47 subtag used for this record’s names.

API reference

GET /v1/it/vehicle-registration

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case plates from the rare corners of the format.
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
provincestringForce the province sticker to a code (e.g. MI, RM). Standard plates only.
seedintegerInteger 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.
withProvincebooleanAttach a random real province sticker to a standard plate.

Request

GET /v1/it/vehicle-registration
curl https://api.real-fake-data.com/v1/it/vehicle-registration

Response fields

FieldTypeDescription
valuestringThe plate in the requested format, e.g. "AK 514 RH".
type"standard" | "motorcycle" | "military" | "diplomatic" | "trailer"Which kind of plate this is.
provinceoptionalstringOptional province sticker (e.g. MI, ROMA); present only when requested.

API reference

GET /v1/lv/company

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case values from the rare corners.
extremebooleanReturn 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.
invalidbooleanCorrupt 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.
seedintegerInteger 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

GET /v1/lv/company
curl https://api.real-fake-data.com/v1/lv/company

Response fields

FieldTypeDescription
namestringThe full company name, including any prefix and legal form.
legalFormstringThe appended legal form, or `null` when none was added.
registracijasNumursstringThe matching registracijas-numurs identifier.

API reference

GET /v1/lv/company-name

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case names (punctuation-heavy families, long/rare forms).
extremebooleanReturn 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.
invalidbooleanReturn 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.
seedintegerInteger 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

GET /v1/lv/company-name
curl https://api.real-fake-data.com/v1/lv/company-name

Response fields

FieldTypeDescription
valuestringThe full company name, including any prefix and legal form.
legalFormstringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
domainstringpattern ^[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.
edgebooleanRestrict output to edge-case addresses from the rare corners of the format.
exoticbooleanAllow rarer RFC-valid local-part characters (%, =, ~). Off by default.
extremebooleanReturn 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.
invalidbooleanReturn 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.
plusTagstringpattern ^[A-Za-z0-9_-]+$Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/lv/email
curl https://api.real-fake-data.com/v1/lv/email

Response fields

FieldTypeDescription
valuestringThe full email address, e.g. "anna.schmidt+news@mueller-bau.de".
localPartstringThe part before the `@`, including any plus tag.
domainstringThe 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.
companystringThe company name a corporate domain or company local-part was derived from, or `null`.
plusTagstringThe plus-addressing tag, or `null` when none.

API reference

GET /v1/lv/iban

Try on playground

Returns 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

ParameterTypeDescription
bankCodestringPin the issuing bank by its 4-letter bank code. Mutually exclusive with bankName.
bankNamestringPin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case IBANs from the rare corners of the format.
extremebooleanReturn 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.
invalidbooleanReturn an IBAN with deliberately wrong check digits, for testing validators.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/lv/iban
curl https://api.real-fake-data.com/v1/lv/iban

Response fields

FieldTypeDescription
valuestringThe IBAN in the requested format.
electronicFormatstringThe space-free electronic form of the IBAN.
bankCodestringThe bank identifier embedded in the IBAN.
bankNamestringHuman-readable name of the issuing bank.

API reference

GET /v1/lv/person

Try on playground

Returns 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

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD.
caseStrictbooleanDefaults to true (proper casing). Set false to deliberately mangle the casing of name and surname; initials stay proper uppercase.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias the number and name shape toward their rarely-exercised corners.
extremebooleanReturn 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.
invalidbooleanReturn a person whose personas kods has a deliberately wrong check value.
olderThanintegerMinimum age in years at request time.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
sex"m" | "f"Encoded sex: "m" or "f".
youngerThanintegerMaximum age in years at request time.

Request

GET /v1/lv/person
curl https://api.real-fake-data.com/v1/lv/person

Response fields

FieldTypeDescription
namestringGiven (first) name(s).
surnamestringSurname.
initialsstringUppercase initials of name and surname, no dots.
birthDatestringThe birth date, ISO `YYYY-MM-DD`.
personasKodsstringThe matching personas kods.

API reference

GET /v1/lv/person-name

Try on playground

Returns 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

ParameterTypeDescription
caseStrictbooleanDefaults 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.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias toward edge-case name shapes (second given names, double surnames, short names).
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger 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

GET /v1/lv/person-name
curl https://api.real-fake-data.com/v1/lv/person-name

Response fields

FieldTypeDescription
namestringGiven (first) name(s), in the local script, agreeing with the reported sex.
surnamestringSurname in the form matching the sex (inflected where the language requires it).
initialsstringUppercase 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 playground

Returns 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

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case values.
extremebooleanReturn 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.
invalidbooleanReturn a personas kods with a deliberately wrong check digit.
olderThanintegerMinimum age in years at request time.
seedintegerInteger 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).
youngerThanintegerMaximum age in years at request time.

Request

GET /v1/lv/personas-kods
curl https://api.real-fake-data.com/v1/lv/personas-kods

Response fields

FieldTypeDescription
valuestringThe personas kods in the requested format.
digitsstringThe canonical 11-digit personas kods.
birthDateoptionalstringThe encoded birth date, ISO `YYYY-MM-DD`; present only for `legacy` codes.

API reference

GET /v1/lv/offering

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict to edge-case offerings (price-band extremes, unusual units, long names).
extremebooleanReturn 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.
industryNamestringFull-text filter: keep offerings whose localized industry label contains this.
invalidbooleanReturn 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.
offeringNamestringFull-text filter: keep offerings whose localized name contains this.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
type"product" | "service"Restrict to products or services. Omit for both.

Request

GET /v1/lv/offering
curl https://api.real-fake-data.com/v1/lv/offering

Response fields

FieldTypeDescription
valuestringThe offering name in the resolved language.
offeringNamestringThe full offering name (alias of `value`).
kind"product" | "service"Whether it is a good or a rendered service.
unitstringThe unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …).
priceintegerA single plausible price, in EUR minor units (cents).
currency"EUR"Currency of `price`; always EUR.
industryCodestringNACE Rev. 2.1 code of the offering’s industry.
industryNamestringThe localized industry label in the resolved language.
languagestringBCP-47 subtag used for this record’s names.

API reference

GET /v1/lv/registracijas-numurs

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case numbers from the rare corners.
extremebooleanReturn 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.
invalidbooleanReturn a number with a deliberately broken validity rule.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/lv/registracijas-numurs
curl https://api.real-fake-data.com/v1/lv/registracijas-numurs

Response fields

FieldTypeDescription
valuestringThe identifier in the requested format (national or VAT).
digitsstringThe canonical, unprefixed 11-digit number.

API reference

GET /v1/lv/vehicle-registration

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case plates from the rare corners of the format.
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger 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

GET /v1/lv/vehicle-registration
curl https://api.real-fake-data.com/v1/lv/vehicle-registration

Response fields

FieldTypeDescription
valuestringThe 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 playground

Returns 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

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case values.
extremebooleanReturn 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.
invalidbooleanReturn an asmens kodas with a deliberately wrong check digit; birth date/sex stay valid.
olderThanintegerMinimum age in years at request time.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
sex"m" | "f"Encoded sex: "m" or "f".
youngerThanintegerMaximum age in years at request time.

Request

GET /v1/lt/asmens-kodas
curl https://api.real-fake-data.com/v1/lt/asmens-kodas

Response fields

FieldTypeDescription
valuestringThe asmens kodas in the requested form (currently the bare digits).
digitsstringThe canonical 11-digit asmens kodas.
birthDatestringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case values from the rare corners.
extremebooleanReturn 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.
invalidbooleanCorrupt 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.
seedintegerInteger 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

GET /v1/lt/company
curl https://api.real-fake-data.com/v1/lt/company

Response fields

FieldTypeDescription
namestringThe full company name, including any prefix and legal form.
legalFormstringThe appended legal form, or `null` when none was added.
imonesKodasstringThe matching imones-kodas identifier.
pvmstringThe matching pvm identifier.

API reference

GET /v1/lt/company-name

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case names (punctuation-heavy families, long/rare forms).
extremebooleanReturn 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.
invalidbooleanReturn 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.
seedintegerInteger 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

GET /v1/lt/company-name
curl https://api.real-fake-data.com/v1/lt/company-name

Response fields

FieldTypeDescription
valuestringThe full company name, including any prefix and legal form.
legalFormstringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
domainstringpattern ^[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.
edgebooleanRestrict output to edge-case addresses from the rare corners of the format.
exoticbooleanAllow rarer RFC-valid local-part characters (%, =, ~). Off by default.
extremebooleanReturn 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.
invalidbooleanReturn 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.
plusTagstringpattern ^[A-Za-z0-9_-]+$Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/lt/email
curl https://api.real-fake-data.com/v1/lt/email

Response fields

FieldTypeDescription
valuestringThe full email address, e.g. "anna.schmidt+news@mueller-bau.de".
localPartstringThe part before the `@`, including any plus tag.
domainstringThe 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.
companystringThe company name a corporate domain or company local-part was derived from, or `null`.
plusTagstringThe plus-addressing tag, or `null` when none.

API reference

GET /v1/lt/iban

Try on playground

Returns 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

ParameterTypeDescription
bankCodestringPin the issuing bank by its 5-digit bank code. Mutually exclusive with bankName.
bankNamestringPin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case IBANs from the rare corners of the format.
extremebooleanReturn 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.
invalidbooleanReturn an IBAN with deliberately wrong check digits, for testing validators.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/lt/iban
curl https://api.real-fake-data.com/v1/lt/iban

Response fields

FieldTypeDescription
valuestringThe IBAN in the requested format.
electronicFormatstringThe space-free electronic form of the IBAN.
bankCodestringThe bank identifier embedded in the IBAN.
bankNamestringHuman-readable name of the issuing bank.

API reference

GET /v1/lt/imones-kodas

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case įmonės koods from the rare corners.
extremebooleanReturn 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.
invalidbooleanReturn an įmonės kodas with a deliberately wrong check digit.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/lt/imones-kodas
curl https://api.real-fake-data.com/v1/lt/imones-kodas

Response fields

FieldTypeDescription
valuestringThe įmonės kodas in the requested form (currently the bare digits).
digitsstringThe canonical 9-digit įmonės kodas.

API reference

GET /v1/lt/person

Try on playground

Returns 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

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD.
caseStrictbooleanDefaults to true (proper casing). Set false to deliberately mangle the casing of name and surname; initials stay proper uppercase.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias the number and name shape toward their rarely-exercised corners.
extremebooleanReturn 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.
invalidbooleanReturn a person whose asmens kodas has a deliberately wrong check value.
olderThanintegerMinimum age in years at request time.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
sex"m" | "f"Encoded sex: "m" or "f".
youngerThanintegerMaximum age in years at request time.

Request

GET /v1/lt/person
curl https://api.real-fake-data.com/v1/lt/person

Response fields

FieldTypeDescription
namestringGiven (first) name(s).
surnamestringSurname.
initialsstringUppercase initials of name and surname, no dots.
birthDatestringThe birth date, ISO `YYYY-MM-DD`.
asmensKodasstringThe matching asmens kodas.

API reference

GET /v1/lt/person-name

Try on playground

Returns 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

ParameterTypeDescription
caseStrictbooleanDefaults 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.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias toward edge-case name shapes (second given names, double surnames, short names).
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger 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

GET /v1/lt/person-name
curl https://api.real-fake-data.com/v1/lt/person-name

Response fields

FieldTypeDescription
namestringGiven (first) name(s), in the local script, agreeing with the reported sex.
surnamestringSurname in the form matching the sex (inflected where the language requires it).
initialsstringUppercase 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict to edge-case offerings (price-band extremes, unusual units, long names).
extremebooleanReturn 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.
industryNamestringFull-text filter: keep offerings whose localized industry label contains this.
invalidbooleanReturn 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.
offeringNamestringFull-text filter: keep offerings whose localized name contains this.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
type"product" | "service"Restrict to products or services. Omit for both.

Request

GET /v1/lt/offering
curl https://api.real-fake-data.com/v1/lt/offering

Response fields

FieldTypeDescription
valuestringThe offering name in the resolved language.
offeringNamestringThe full offering name (alias of `value`).
kind"product" | "service"Whether it is a good or a rendered service.
unitstringThe unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …).
priceintegerA single plausible price, in EUR minor units (cents).
currency"EUR"Currency of `price`; always EUR.
industryCodestringNACE Rev. 2.1 code of the offering’s industry.
industryNamestringThe localized industry label in the resolved language.
languagestringBCP-47 subtag used for this record’s names.

API reference

GET /v1/lt/pvm

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case PVM numbers from the rare corners.
extremebooleanReturn 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.
invalidbooleanReturn a PVM number with a deliberately wrong check digit.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/lt/pvm
curl https://api.real-fake-data.com/v1/lt/pvm

Response fields

FieldTypeDescription
valuestringThe PVM number in the requested format (national or LT-prefixed VAT).
digitsstringThe canonical, unprefixed 9-digit PVM number.

API reference

GET /v1/lt/vehicle-registration

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case plates from the rare corners of the format.
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger 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

GET /v1/lt/vehicle-registration
curl https://api.real-fake-data.com/v1/lt/vehicle-registration

Response fields

FieldTypeDescription
valuestringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case values from the rare corners.
extremebooleanReturn 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.
invalidbooleanCorrupt 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.
seedintegerInteger 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

GET /v1/lu/company
curl https://api.real-fake-data.com/v1/lu/company

Response fields

FieldTypeDescription
namestringThe full company name, including any prefix and legal form.
legalFormstringThe appended legal form, or `null` when none was added.
tvastringThe matching tva identifier.

API reference

GET /v1/lu/company-name

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case names (punctuation-heavy families, long/rare forms).
extremebooleanReturn 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.
invalidbooleanReturn 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.
seedintegerInteger 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

GET /v1/lu/company-name
curl https://api.real-fake-data.com/v1/lu/company-name

Response fields

FieldTypeDescription
valuestringThe full company name, including any prefix and legal form.
legalFormstringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
domainstringpattern ^[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.
edgebooleanRestrict output to edge-case addresses from the rare corners of the format.
exoticbooleanAllow rarer RFC-valid local-part characters (%, =, ~). Off by default.
extremebooleanReturn 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.
invalidbooleanReturn 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.
plusTagstringpattern ^[A-Za-z0-9_-]+$Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/lu/email
curl https://api.real-fake-data.com/v1/lu/email

Response fields

FieldTypeDescription
valuestringThe full email address, e.g. "anna.schmidt+news@mueller-bau.de".
localPartstringThe part before the `@`, including any plus tag.
domainstringThe 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.
companystringThe company name a corporate domain or company local-part was derived from, or `null`.
plusTagstringThe plus-addressing tag, or `null` when none.

API reference

GET /v1/lu/iban

Try on playground

Returns 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

ParameterTypeDescription
bankCodestringPin the issuing bank by its 3-digit bank code. Mutually exclusive with bankName.
bankNamestringPin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case IBANs from the rare corners of the format.
extremebooleanReturn 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.
invalidbooleanReturn an IBAN with deliberately wrong check digits, for testing validators.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/lu/iban
curl https://api.real-fake-data.com/v1/lu/iban

Response fields

FieldTypeDescription
valuestringThe IBAN in the requested format.
electronicFormatstringThe space-free electronic form of the IBAN.
bankCodestringThe bank identifier embedded in the IBAN.
bankNamestringHuman-readable name of the issuing bank.

API reference

GET /v1/lu/matricule

Try on playground

Returns 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

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case values.
extremebooleanReturn 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.
invalidbooleanReturn a matricule with deliberately wrong check digits; the birth date stays valid.
olderThanintegerMinimum age in years at request time.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
youngerThanintegerMaximum age in years at request time.

Request

GET /v1/lu/matricule
curl https://api.real-fake-data.com/v1/lu/matricule

Response fields

FieldTypeDescription
valuestringThe 13-digit matricule.
digitsstringThe canonical 13-digit matricule.
birthDatestringThe encoded birth date, ISO `YYYY-MM-DD`.

API reference

GET /v1/lu/person

Try on playground

Returns 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

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD.
caseStrictbooleanDefaults to true (proper casing). Set false to deliberately mangle the casing of name and surname; initials stay proper uppercase.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias the number and name shape toward their rarely-exercised corners.
extremebooleanReturn 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.
invalidbooleanReturn a person whose matricule has a deliberately wrong check value.
olderThanintegerMinimum age in years at request time.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
sex"m" | "f"Encoded sex: "m" or "f".
youngerThanintegerMaximum age in years at request time.

Request

GET /v1/lu/person
curl https://api.real-fake-data.com/v1/lu/person

Response fields

FieldTypeDescription
namestringGiven (first) name(s).
surnamestringSurname.
initialsstringUppercase initials of name and surname, no dots.
birthDatestringThe birth date, ISO `YYYY-MM-DD`.
matriculestringThe matching matricule.

API reference

GET /v1/lu/person-name

Try on playground

Returns 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

ParameterTypeDescription
caseStrictbooleanDefaults 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.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias toward edge-case name shapes (second given names, double surnames, short names).
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger 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

GET /v1/lu/person-name
curl https://api.real-fake-data.com/v1/lu/person-name

Response fields

FieldTypeDescription
namestringGiven (first) name(s), in the local script, agreeing with the reported sex.
surnamestringSurname in the form matching the sex (inflected where the language requires it).
initialsstringUppercase 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict to edge-case offerings (price-band extremes, unusual units, long names).
extremebooleanReturn 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.
industryNamestringFull-text filter: keep offerings whose localized industry label contains this.
invalidbooleanReturn 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.
offeringNamestringFull-text filter: keep offerings whose localized name contains this.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
type"product" | "service"Restrict to products or services. Omit for both.

Request

GET /v1/lu/offering
curl https://api.real-fake-data.com/v1/lu/offering

Response fields

FieldTypeDescription
valuestringThe offering name in the resolved language.
offeringNamestringThe full offering name (alias of `value`).
kind"product" | "service"Whether it is a good or a rendered service.
unitstringThe unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …).
priceintegerA single plausible price, in EUR minor units (cents).
currency"EUR"Currency of `price`; always EUR.
industryCodestringNACE Rev. 2.1 code of the offering’s industry.
industryNamestringThe localized industry label in the resolved language.
languagestringBCP-47 subtag used for this record’s names.

API reference

GET /v1/lu/tva

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case TVAs from the rare corners.
extremebooleanReturn 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.
invalidbooleanReturn a TVA with a deliberately wrong two-digit check pair.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/lu/tva
curl https://api.real-fake-data.com/v1/lu/tva

Response fields

FieldTypeDescription
valuestringThe identifier in the requested format (national or VAT).
digitsstringThe canonical, unprefixed 8-digit TVA.

API reference

GET /v1/lu/vehicle-registration

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict 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.
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger 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

GET /v1/lu/vehicle-registration
curl https://api.real-fake-data.com/v1/lu/vehicle-registration

Response fields

FieldTypeDescription
valuestringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case values from the rare corners.
extremebooleanReturn 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.
invalidbooleanCorrupt 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.
seedintegerInteger 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

GET /v1/mt/company
curl https://api.real-fake-data.com/v1/mt/company

Response fields

FieldTypeDescription
namestringThe full company name, including any prefix and legal form.
legalFormstringThe appended legal form, or `null` when none was added.
vatstringThe matching vat identifier.

API reference

GET /v1/mt/company-name

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case names (punctuation-heavy families, long/rare forms).
extremebooleanReturn 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.
invalidbooleanReturn 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.
seedintegerInteger 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

GET /v1/mt/company-name
curl https://api.real-fake-data.com/v1/mt/company-name

Response fields

FieldTypeDescription
valuestringThe full company name, including any prefix and legal form.
legalFormstringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
domainstringpattern ^[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.
edgebooleanRestrict output to edge-case addresses from the rare corners of the format.
exoticbooleanAllow rarer RFC-valid local-part characters (%, =, ~). Off by default.
extremebooleanReturn 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.
invalidbooleanReturn 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.
plusTagstringpattern ^[A-Za-z0-9_-]+$Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/mt/email
curl https://api.real-fake-data.com/v1/mt/email

Response fields

FieldTypeDescription
valuestringThe full email address, e.g. "anna.schmidt+news@mueller-bau.de".
localPartstringThe part before the `@`, including any plus tag.
domainstringThe 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.
companystringThe company name a corporate domain or company local-part was derived from, or `null`.
plusTagstringThe plus-addressing tag, or `null` when none.

API reference

GET /v1/mt/iban

Try on playground

Returns 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

ParameterTypeDescription
bankCodestringPin the issuing bank by its 4-letter bank code. Mutually exclusive with bankName.
bankNamestringPin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case IBANs from the rare corners of the format.
extremebooleanReturn 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.
invalidbooleanReturn an IBAN with deliberately wrong check digits, for testing validators.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/mt/iban
curl https://api.real-fake-data.com/v1/mt/iban

Response fields

FieldTypeDescription
valuestringThe IBAN in the requested format.
electronicFormatstringThe space-free electronic form of the IBAN.
bankCodestringThe bank identifier embedded in the IBAN.
bankNamestringHuman-readable name of the issuing bank.

API reference

GET /v1/mt/id-card

Try on playground

Returns 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

ParameterTypeDescription
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.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case cards from the rare corners.
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/mt/id-card
curl https://api.real-fake-data.com/v1/mt/id-card

Response fields

FieldTypeDescription
valuestringThe full identity card number, digits + category letter.
digitsstringThe 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 playground

Returns 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

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD.
caseStrictbooleanDefaults to true (proper casing). Set false to deliberately mangle the casing of name and surname; initials stay proper uppercase.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias the number and name shape toward their rarely-exercised corners.
extremebooleanReturn 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.
invalidbooleanReturn a person whose ID-card number has a deliberately wrong check value.
olderThanintegerMinimum age in years at request time.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
sex"m" | "f"Encoded sex: "m" or "f".
youngerThanintegerMaximum age in years at request time.

Request

GET /v1/mt/person
curl https://api.real-fake-data.com/v1/mt/person

Response fields

FieldTypeDescription
namestringGiven (first) name(s).
surnamestringSurname.
initialsstringUppercase initials of name and surname, no dots.
birthDatestringThe birth date, ISO `YYYY-MM-DD`.
idCardstringThe matching ID-card number.

API reference

GET /v1/mt/person-name

Try on playground

Returns 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

ParameterTypeDescription
caseStrictbooleanDefaults 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.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias toward edge-case name shapes (second given names, double surnames, short names).
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger 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

GET /v1/mt/person-name
curl https://api.real-fake-data.com/v1/mt/person-name

Response fields

FieldTypeDescription
namestringGiven (first) name(s), in the local script, agreeing with the reported sex.
surnamestringSurname in the form matching the sex (inflected where the language requires it).
initialsstringUppercase 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict to edge-case offerings (price-band extremes, unusual units, long names).
extremebooleanReturn 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.
industryNamestringFull-text filter: keep offerings whose localized industry label contains this.
invalidbooleanReturn 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.
offeringNamestringFull-text filter: keep offerings whose localized name contains this.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
type"product" | "service"Restrict to products or services. Omit for both.

Request

GET /v1/mt/offering
curl https://api.real-fake-data.com/v1/mt/offering

Response fields

FieldTypeDescription
valuestringThe offering name in the resolved language.
offeringNamestringThe full offering name (alias of `value`).
kind"product" | "service"Whether it is a good or a rendered service.
unitstringThe unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …).
priceintegerA single plausible price, in EUR minor units (cents).
currency"EUR"Currency of `price`; always EUR.
industryCodestringNACE Rev. 2.1 code of the offering’s industry.
industryNamestringThe localized industry label in the resolved language.
languagestringBCP-47 subtag used for this record’s names.

API reference

GET /v1/mt/vat

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case VAT numbers from the rare corners.
extremebooleanReturn 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.
invalidbooleanReturn a number with a deliberately wrong mod-37 check digit.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/mt/vat
curl https://api.real-fake-data.com/v1/mt/vat

Response fields

FieldTypeDescription
valuestringThe VAT number in the requested format (national or MT-prefixed).
digitsstringThe canonical, unprefixed 8-digit number.

API reference

GET /v1/mt/vehicle-registration

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case plates from the rare corners of the format.
expiryMonthstringPin a standard/motorcycle plate to a road-licence expiry month (full English name, e.g. August). An unknown month is a 400.
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger 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

GET /v1/mt/vehicle-registration
curl https://api.real-fake-data.com/v1/mt/vehicle-registration

Response fields

FieldTypeDescription
valuestringThe 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.
expiryMonthoptionalstringThe 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 playground

Returns a realistic Polish address drawn from real cities and streets. Narrow the location with a `teryt` prefix (1–7 digits).

Query parameters

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case addresses (street-less localities, awkward names/numbers).
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
terytstringpattern ^\d{1,7}$Restrict output to a region by TERYT prefix (1–7 digits).

Request

GET /v1/pl/address
curl https://api.real-fake-data.com/v1/pl/address

Response fields

FieldTypeDescription
streetFullNameoptionalstring
buildingNumberstring
postalCodestring
cityNamestring
municipalityNamestring
countyNamestring
voivodeshipNamestring
terytCodesobject

API reference

GET /v1/pl/company

Try on playground

Returns 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

ParameterTypeDescription
activityPrefixbooleanForce ("true") or forbid ("false") a leading activity prefix (PPHU, FHU).
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case values from the rare corners.
extremebooleanReturn 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.
invalidbooleanCorrupt 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.
seedintegerInteger 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

GET /v1/pl/company
curl https://api.real-fake-data.com/v1/pl/company

Response fields

FieldTypeDescription
namestringThe 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.
nipstringThe matching NIP, in the requested format.
regonstringThe matching 9-digit REGON.
krsstringThe 10-digit KRS number, or null for non-KRS entities (e.g. S.C.).

API reference

GET /v1/pl/company-name

Try on playground

Returns 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

ParameterTypeDescription
activityPrefixbooleanForce ("true") or forbid ("false") a leading activity prefix (PPHU, FHU). Omit to let the generator decide.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case names from the rare corners.
extremebooleanReturn 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.
invalidbooleanReturn 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.
seedintegerInteger 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

GET /v1/pl/company-name
curl https://api.real-fake-data.com/v1/pl/company-name

Response fields

FieldTypeDescription
valuestringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case licence numbers from the rare corners of the format.
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
yearintegerFull four-digit issue year encoded in the licence. Out-of-range values return a 400.

Request

GET /v1/pl/driving-license
curl https://api.real-fake-data.com/v1/pl/driving-license

Response fields

FieldTypeDescription
valuestringThe licence number in the requested format.
serialstringThe five-digit serial block, e.g. "08234".
yearintegerThe full four-digit issue year, e.g. 2019.
suffixstringThe four-digit suffix block, e.g. "4521".

API reference

GET /v1/pl/email

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
domainstringpattern ^[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.
edgebooleanRestrict output to edge-case addresses from the rare corners of the format.
exoticbooleanAllow rarer RFC-valid local-part characters (%, =, ~). Off by default.
extremebooleanReturn 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.
invalidbooleanReturn 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.
plusTagstringpattern ^[A-Za-z0-9_-]+$Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/pl/email
curl https://api.real-fake-data.com/v1/pl/email

Response fields

FieldTypeDescription
valuestringThe full email address, e.g. "anna.schmidt+news@mueller-bau.de".
localPartstringThe part before the `@`, including any plus tag.
domainstringThe 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.
companystringThe company name a corporate domain or company local-part was derived from, or `null`.
plusTagstringThe plus-addressing tag, or `null` when none.

API reference

GET /v1/pl/iban

Try on playground

Returns 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

ParameterTypeDescription
bankCodestringpattern ^\d{4}$Pin the issuing bank by its four-digit code. Mutually exclusive with bankName.
bankNamestringPin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case IBANs from the rare corners of the format.
extremebooleanReturn 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.
invalidbooleanReturn an IBAN with deliberately wrong check digits, for testing validators.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/pl/iban
curl https://api.real-fake-data.com/v1/pl/iban

Response fields

FieldTypeDescription
valuestringThe IBAN in the requested format.
electronicFormatstringThe space-free, 28-character electronic form.
bankCodestringFour-digit bank identifier embedded in the IBAN.
bankNamestringHuman-readable name of the issuing bank.

API reference

GET /v1/pl/id-card

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case cards from the rare corners of the format.
expiredbooleanReturn a card whose expiration date is in the past.
extremebooleanReturn 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.
invalidbooleanReturn a number with a deliberately wrong check digit.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/pl/id-card
curl https://api.real-fake-data.com/v1/pl/id-card

Response fields

FieldTypeDescription
valuestringThe ID card number in the requested format.
seriesstringThe three uppercase series letters, e.g. "ABA".
numberstringThe six digits including the leading check digit, e.g. "300000".
expirationDatestringThe card expiration date, ISO `YYYY-MM-DD`. Past when `expired=true`.

API reference

GET /v1/pl/krs

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to the register boundary numbers.
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/pl/krs
curl https://api.real-fake-data.com/v1/pl/krs

Response fields

FieldTypeDescription
valuestringThe KRS in the requested format.
numberintegerThe underlying sequential register integer.

API reference

GET /v1/pl/land-register

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
courtstringRestrict to one court department, by four-character code (e.g. WA1M) or name fragment.
edgebooleanRestrict output to edge-case register numbers at the boundaries of the number space.
extremebooleanReturn 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.
invalidbooleanReturn a number with a deliberately wrong check digit.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/pl/land-register
curl https://api.real-fake-data.com/v1/pl/land-register

Response fields

FieldTypeDescription
valuestringThe register number in the requested format.
courtCodestringThe four-character court department code, e.g. "WA1M".
numberstringThe eight-digit zero-padded register number, e.g. "00012345".
checkDigitstringThe single check digit, e.g. "6".
courtoptionalstringName of the court department the code belongs to.

API reference

GET /v1/pl/nip

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case NIPs from the rare corners.
extremebooleanReturn 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.
invalidbooleanReturn a NIP with a deliberately wrong check digit.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/pl/nip
curl https://api.real-fake-data.com/v1/pl/nip

Response fields

FieldTypeDescription
valuestringThe NIP in the requested format.
digitsstringThe canonical, unformatted 10-digit NIP.

API reference

GET /v1/pl/passport

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case passports from the rare corners.
extremebooleanReturn 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.
invalidbooleanReturn a number with a deliberately wrong check digit.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/pl/passport
curl https://api.real-fake-data.com/v1/pl/passport

Response fields

FieldTypeDescription
valuestringThe passport number in the requested format.
seriesstringThe two uppercase series letters, e.g. "AA".
numberstringThe seven digits including the check digit, e.g. "1234567".

API reference

GET /v1/pl/person

Try on playground

Returns 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

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD.
caseStrictbooleanDefaults 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.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case values.
extremebooleanReturn 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.
invalidbooleanReturn a PESEL with a deliberately wrong check digit; birth date and sex stay valid.
olderThanintegerMinimum age in years at request time.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
sex"m" | "f"Encoded sex: "m" or "f".
youngerThanintegerMaximum age in years at request time.

Request

GET /v1/pl/person
curl https://api.real-fake-data.com/v1/pl/person

Response fields

FieldTypeDescription
namestringGiven (first) name, agreeing with the encoded sex.
surnamestringSurname in the form matching the sex, e.g. `Kowalski` / `Kowalska`.
initialsstringUppercase initials of name and surname, no dots, e.g. `JK`.
birthDatestringThe birth date, ISO `YYYY-MM-DD`.
peselstringThe matching 11-digit PESEL.

API reference

GET /v1/pl/person-name

Try on playground

Returns 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

ParameterTypeDescription
caseStrictbooleanDefaults 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.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias toward edge-case name shapes (second given names, double surnames, short names).
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger 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

GET /v1/pl/person-name
curl https://api.real-fake-data.com/v1/pl/person-name

Response fields

FieldTypeDescription
namestringGiven (first) name(s), agreeing with the reported sex.
surnamestringSurname in the form matching the sex, e.g. `Kowalski` / `Kowalska`.
initialsstringUppercase 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 playground

Returns 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

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case values.
extremebooleanReturn 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.
invalidbooleanReturn a PESEL with a deliberately wrong check digit; birth date and sex stay valid.
olderThanintegerMinimum age in years at request time.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
sex"m" | "f"Encoded sex: "m" or "f".
youngerThanintegerMaximum age in years at request time.

Request

GET /v1/pl/pesel
curl https://api.real-fake-data.com/v1/pl/pesel

Response fields

FieldTypeDescription
valuestringThe canonical 11-digit PESEL.
birthDatestringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict to edge-case offerings (price-band extremes, unusual units, long names).
extremebooleanReturn 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.
industryNamestringFull-text filter: keep offerings whose localized industry label contains this.
invalidbooleanReturn 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.
offeringNamestringFull-text filter: keep offerings whose localized name contains this.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
type"product" | "service"Restrict to products or services. Omit for both.

Request

GET /v1/pl/offering
curl https://api.real-fake-data.com/v1/pl/offering

Response fields

FieldTypeDescription
valuestringThe offering name in the resolved language.
offeringNamestringThe full offering name (alias of `value`).
kind"product" | "service"Whether it is a good or a rendered service.
unitstringThe unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …).
priceintegerA single plausible price, in EUR minor units (cents).
currency"EUR"Currency of `price`; always EUR.
industryCodestringNACE Rev. 2.1 code of the offering’s industry.
industryNamestringThe localized industry label in the resolved language.
languagestringBCP-47 subtag used for this record’s names.

API reference

GET /v1/pl/regon

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case REGONs from the rare corners.
extremebooleanReturn 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.
invalidbooleanReturn a REGON with a deliberately wrong check digit.
seedintegerInteger 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

GET /v1/pl/regon
curl https://api.real-fake-data.com/v1/pl/regon

Response fields

FieldTypeDescription
valuestringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
countystringNarrow a standard or historic plate to a county (names are not unique across voivodeships).
edgebooleanRestrict output to edge-case plates from the rare corners of the format.
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger 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.
voivodeshipstringNarrow a standard, custom, or historic plate to a voivodeship.

Request

GET /v1/pl/vehicle-registration
curl https://api.real-fake-data.com/v1/pl/vehicle-registration

Response fields

FieldTypeDescription
valuestringThe plate in the requested format, e.g. "WPI 1A34".
prefixstringLeading code: area wyróżnik (WPI), custom head (P0), or service prefix (HP, UC).
individualPartstringThe individual part only, e.g. "1A34", "KAZIK", "12345", "12A".
type"standard" | "custom" | "police" | "military" | "historic" | "motorcycle" | "short"Which kind of plate this is.
voivodeshipoptionalstringVoivodeship the plate belongs to; absent for police/military.
countyoptionalstringCounty or city the area code belongs to; present for standard, historic, and motorcycle plates.

API reference

GET /v1/pt/cartao-cidadao

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case numbers from the rare corners.
extremebooleanReturn 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.
invalidbooleanReturn a document number with a deliberately wrong final check character.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/pt/cartao-cidadao
curl https://api.real-fake-data.com/v1/pt/cartao-cidadao

Response fields

FieldTypeDescription
valuestringThe full 12-character Cartão de Cidadão document number.
nicstringThe 8-digit NIC (civil identification number).
versionstringThe two-character version block, e.g. `ZZ`.

API reference

GET /v1/pt/company

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case values from the rare corners.
extremebooleanReturn 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.
invalidbooleanCorrupt 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.
seedintegerInteger 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

GET /v1/pt/company
curl https://api.real-fake-data.com/v1/pt/company

Response fields

FieldTypeDescription
namestringThe full company name, including any prefix and legal form.
legalFormstringThe appended legal form, or `null` when none was added.
nifstringThe matching nif identifier.

API reference

GET /v1/pt/company-name

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case names (punctuation-heavy families, long/rare forms).
extremebooleanReturn 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.
invalidbooleanReturn 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.
seedintegerInteger 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

GET /v1/pt/company-name
curl https://api.real-fake-data.com/v1/pt/company-name

Response fields

FieldTypeDescription
valuestringThe full company name, including any prefix and legal form.
legalFormstringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
domainstringpattern ^[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.
edgebooleanRestrict output to edge-case addresses from the rare corners of the format.
exoticbooleanAllow rarer RFC-valid local-part characters (%, =, ~). Off by default.
extremebooleanReturn 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.
invalidbooleanReturn 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.
plusTagstringpattern ^[A-Za-z0-9_-]+$Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/pt/email
curl https://api.real-fake-data.com/v1/pt/email

Response fields

FieldTypeDescription
valuestringThe full email address, e.g. "anna.schmidt+news@mueller-bau.de".
localPartstringThe part before the `@`, including any plus tag.
domainstringThe 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.
companystringThe company name a corporate domain or company local-part was derived from, or `null`.
plusTagstringThe plus-addressing tag, or `null` when none.

API reference

GET /v1/pt/iban

Try on playground

Returns 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

ParameterTypeDescription
bankCodestringPin the issuing bank by its 4-digit bank code. Mutually exclusive with bankName.
bankNamestringPin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case IBANs from the rare corners of the format.
extremebooleanReturn 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.
invalidbooleanReturn an IBAN with deliberately wrong check digits, for testing validators.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/pt/iban
curl https://api.real-fake-data.com/v1/pt/iban

Response fields

FieldTypeDescription
valuestringThe IBAN in the requested format.
electronicFormatstringThe space-free electronic form of the IBAN.
bankCodestringThe bank identifier embedded in the IBAN.
bankNamestringHuman-readable name of the issuing bank.

API reference

GET /v1/pt/nif

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict 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).
extremebooleanReturn 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.
invalidbooleanReturn a NIF with a deliberately wrong mod-11 check digit.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/pt/nif
curl https://api.real-fake-data.com/v1/pt/nif

Response fields

FieldTypeDescription
valuestringThe NIF in the requested format (national or PT VAT).
digitsstringThe canonical, unprefixed 9-digit NIF.
entity"person" | "company"Which entity kind the number was shaped for.

API reference

GET /v1/pt/person

Try on playground

Returns 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

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD.
caseStrictbooleanDefaults to true (proper casing). Set false to deliberately mangle the casing of name and surname; initials stay proper uppercase.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias the number and name shape toward their rarely-exercised corners.
extremebooleanReturn 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.
invalidbooleanReturn a person whose Cartão de Cidadão number has a deliberately wrong check value.
olderThanintegerMinimum age in years at request time.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
sex"m" | "f"Encoded sex: "m" or "f".
youngerThanintegerMaximum age in years at request time.

Request

GET /v1/pt/person
curl https://api.real-fake-data.com/v1/pt/person

Response fields

FieldTypeDescription
namestringGiven (first) name(s).
surnamestringSurname.
initialsstringUppercase initials of name and surname, no dots.
birthDatestringThe birth date, ISO `YYYY-MM-DD`.
cartaoCidadaostringThe matching Cartão de Cidadão number.

API reference

GET /v1/pt/person-name

Try on playground

Returns 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

ParameterTypeDescription
caseStrictbooleanDefaults 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.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias toward edge-case name shapes (second given names, double surnames, short names).
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger 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

GET /v1/pt/person-name
curl https://api.real-fake-data.com/v1/pt/person-name

Response fields

FieldTypeDescription
namestringGiven (first) name(s), in the local script, agreeing with the reported sex.
surnamestringSurname in the form matching the sex (inflected where the language requires it).
initialsstringUppercase 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict to edge-case offerings (price-band extremes, unusual units, long names).
extremebooleanReturn 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.
industryNamestringFull-text filter: keep offerings whose localized industry label contains this.
invalidbooleanReturn 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.
offeringNamestringFull-text filter: keep offerings whose localized name contains this.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
type"product" | "service"Restrict to products or services. Omit for both.

Request

GET /v1/pt/offering
curl https://api.real-fake-data.com/v1/pt/offering

Response fields

FieldTypeDescription
valuestringThe offering name in the resolved language.
offeringNamestringThe full offering name (alias of `value`).
kind"product" | "service"Whether it is a good or a rendered service.
unitstringThe unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …).
priceintegerA single plausible price, in EUR minor units (cents).
currency"EUR"Currency of `price`; always EUR.
industryCodestringNACE Rev. 2.1 code of the offering’s industry.
industryNamestringThe localized industry label in the resolved language.
languagestringBCP-47 subtag used for this record’s names.

API reference

GET /v1/pt/vehicle-registration

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict 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.
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger 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

GET /v1/pt/vehicle-registration
curl https://api.real-fake-data.com/v1/pt/vehicle-registration

Response fields

FieldTypeDescription
valuestringThe 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 playground

Returns 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

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case values.
extremebooleanReturn 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.
invalidbooleanReturn a CNP with a deliberately wrong check digit; date/sex/county stay valid.
olderThanintegerMinimum age in years at request time.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
sex"m" | "f"Encoded sex: "m" or "f".
youngerThanintegerMaximum age in years at request time.

Request

GET /v1/ro/cnp
curl https://api.real-fake-data.com/v1/ro/cnp

Response fields

FieldTypeDescription
valuestringThe CNP in the requested format.
digitsstringThe canonical 13-digit CNP.
birthDatestringThe encoded birth date, ISO `YYYY-MM-DD`.
sex"m" | "f"Encoded sex: `m` (odd leading digit) or `f` (even).
countystringThe 2-digit county code (`JJ`) encoded in the CNP.

API reference

GET /v1/ro/company

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case values from the rare corners.
extremebooleanReturn 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.
invalidbooleanCorrupt 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.
seedintegerInteger 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

GET /v1/ro/company
curl https://api.real-fake-data.com/v1/ro/company

Response fields

FieldTypeDescription
namestringThe full company name, including any prefix and legal form.
legalFormstringThe appended legal form, or `null` when none was added.
cuistringThe matching cui identifier.

API reference

GET /v1/ro/company-name

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case names (punctuation-heavy families, long/rare forms).
extremebooleanReturn 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.
invalidbooleanReturn 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.
seedintegerInteger 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

GET /v1/ro/company-name
curl https://api.real-fake-data.com/v1/ro/company-name

Response fields

FieldTypeDescription
valuestringThe full company name, including any prefix and legal form.
legalFormstringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case CUIs from the rare corners.
extremebooleanReturn 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.
invalidbooleanReturn a CUI with a deliberately wrong control digit.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/ro/cui
curl https://api.real-fake-data.com/v1/ro/cui

Response fields

FieldTypeDescription
valuestringThe identifier in the requested format (national or VAT).
digitsstringThe canonical, unprefixed digit string incl. the control digit.

API reference

GET /v1/ro/email

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
domainstringpattern ^[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.
edgebooleanRestrict output to edge-case addresses from the rare corners of the format.
exoticbooleanAllow rarer RFC-valid local-part characters (%, =, ~). Off by default.
extremebooleanReturn 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.
invalidbooleanReturn 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.
plusTagstringpattern ^[A-Za-z0-9_-]+$Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/ro/email
curl https://api.real-fake-data.com/v1/ro/email

Response fields

FieldTypeDescription
valuestringThe full email address, e.g. "anna.schmidt+news@mueller-bau.de".
localPartstringThe part before the `@`, including any plus tag.
domainstringThe 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.
companystringThe company name a corporate domain or company local-part was derived from, or `null`.
plusTagstringThe plus-addressing tag, or `null` when none.

API reference

GET /v1/ro/iban

Try on playground

Returns 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

ParameterTypeDescription
bankCodestringPin the issuing bank by its 4-letter bank code. Mutually exclusive with bankName.
bankNamestringPin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case IBANs from the rare corners of the format.
extremebooleanReturn 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.
invalidbooleanReturn an IBAN with deliberately wrong check digits, for testing validators.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/ro/iban
curl https://api.real-fake-data.com/v1/ro/iban

Response fields

FieldTypeDescription
valuestringThe IBAN in the requested format.
electronicFormatstringThe space-free electronic form of the IBAN.
bankCodestringThe bank identifier embedded in the IBAN.
bankNamestringHuman-readable name of the issuing bank.

API reference

GET /v1/ro/person

Try on playground

Returns 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

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD.
caseStrictbooleanDefaults to true (proper casing). Set false to deliberately mangle the casing of name and surname; initials stay proper uppercase.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias the number and name shape toward their rarely-exercised corners.
extremebooleanReturn 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.
invalidbooleanReturn a person whose CNP has a deliberately wrong check value.
olderThanintegerMinimum age in years at request time.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
sex"m" | "f"Encoded sex: "m" or "f".
youngerThanintegerMaximum age in years at request time.

Request

GET /v1/ro/person
curl https://api.real-fake-data.com/v1/ro/person

Response fields

FieldTypeDescription
namestringGiven (first) name(s).
surnamestringSurname.
initialsstringUppercase initials of name and surname, no dots.
birthDatestringThe birth date, ISO `YYYY-MM-DD`.
cnpstringThe matching CNP.

API reference

GET /v1/ro/person-name

Try on playground

Returns 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

ParameterTypeDescription
caseStrictbooleanDefaults 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.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias toward edge-case name shapes (second given names, double surnames, short names).
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger 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

GET /v1/ro/person-name
curl https://api.real-fake-data.com/v1/ro/person-name

Response fields

FieldTypeDescription
namestringGiven (first) name(s), in the local script, agreeing with the reported sex.
surnamestringSurname in the form matching the sex (inflected where the language requires it).
initialsstringUppercase 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict to edge-case offerings (price-band extremes, unusual units, long names).
extremebooleanReturn 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.
industryNamestringFull-text filter: keep offerings whose localized industry label contains this.
invalidbooleanReturn 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.
offeringNamestringFull-text filter: keep offerings whose localized name contains this.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
type"product" | "service"Restrict to products or services. Omit for both.

Request

GET /v1/ro/offering
curl https://api.real-fake-data.com/v1/ro/offering

Response fields

FieldTypeDescription
valuestringThe offering name in the resolved language.
offeringNamestringThe full offering name (alias of `value`).
kind"product" | "service"Whether it is a good or a rendered service.
unitstringThe unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …).
priceintegerA single plausible price, in EUR minor units (cents).
currency"EUR"Currency of `price`; always EUR.
industryCodestringNACE Rev. 2.1 code of the offering’s industry.
industryNamestringThe localized industry label in the resolved language.
languagestringBCP-47 subtag used for this record’s names.

API reference

GET /v1/ro/vehicle-registration

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
countystringRestrict 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.
edgebooleanRestrict output to edge-case plates from the rare corners of the format.
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger 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

GET /v1/ro/vehicle-registration
curl https://api.real-fake-data.com/v1/ro/vehicle-registration

Response fields

FieldTypeDescription
valuestringThe plate in the requested format, e.g. "CJ 07 ABD".
type"standard" | "motorcycle" | "electric" | "temporary" | "military" | "police" | "diplomatic"Which kind of plate this is.
countyoptionalstringThe county the plate belongs to (e.g. Cluj, București); present only for county-coded classes.
countyCodeoptionalstringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case values from the rare corners.
extremebooleanReturn 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.
invalidbooleanCorrupt 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.
seedintegerInteger 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

GET /v1/sk/company
curl https://api.real-fake-data.com/v1/sk/company

Response fields

FieldTypeDescription
namestringThe full company name, including any prefix and legal form.
legalFormstringThe appended legal form, or `null` when none was added.
icostringThe matching ico identifier.
icDphstringThe matching ic-dph identifier.

API reference

GET /v1/sk/company-name

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case names (punctuation-heavy families, long/rare forms).
extremebooleanReturn 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.
invalidbooleanReturn 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.
seedintegerInteger 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

GET /v1/sk/company-name
curl https://api.real-fake-data.com/v1/sk/company-name

Response fields

FieldTypeDescription
valuestringThe full company name, including any prefix and legal form.
legalFormstringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
domainstringpattern ^[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.
edgebooleanRestrict output to edge-case addresses from the rare corners of the format.
exoticbooleanAllow rarer RFC-valid local-part characters (%, =, ~). Off by default.
extremebooleanReturn 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.
invalidbooleanReturn 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.
plusTagstringpattern ^[A-Za-z0-9_-]+$Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/sk/email
curl https://api.real-fake-data.com/v1/sk/email

Response fields

FieldTypeDescription
valuestringThe full email address, e.g. "anna.schmidt+news@mueller-bau.de".
localPartstringThe part before the `@`, including any plus tag.
domainstringThe 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.
companystringThe company name a corporate domain or company local-part was derived from, or `null`.
plusTagstringThe plus-addressing tag, or `null` when none.

API reference

GET /v1/sk/iban

Try on playground

Returns 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

ParameterTypeDescription
bankCodestringPin the issuing bank by its 4-digit bank code. Mutually exclusive with bankName.
bankNamestringPin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case IBANs from the rare corners of the format.
extremebooleanReturn 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.
invalidbooleanReturn an IBAN with deliberately wrong check digits, for testing validators.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/sk/iban
curl https://api.real-fake-data.com/v1/sk/iban

Response fields

FieldTypeDescription
valuestringThe IBAN in the requested format.
electronicFormatstringThe space-free electronic form of the IBAN.
bankCodestringThe bank identifier embedded in the IBAN.
bankNamestringHuman-readable name of the issuing bank.

API reference

GET /v1/sk/ic-dph

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case numbers from the boundaries.
extremebooleanReturn 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.
invalidbooleanReturn a number with a deliberately wrong divisible-by-11 check.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/sk/ic-dph
curl https://api.real-fake-data.com/v1/sk/ic-dph

Response fields

FieldTypeDescription
valuestringThe number in the requested format (national or `SK`-prefixed VAT).
digitsstringThe canonical, unprefixed 10-digit number.

API reference

GET /v1/sk/ico

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case IČOs from the rare corners.
extremebooleanReturn 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.
invalidbooleanReturn an IČO with a deliberately wrong mod-11 check digit.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/sk/ico
curl https://api.real-fake-data.com/v1/sk/ico

Response fields

FieldTypeDescription
valuestringThe 8-digit IČO.
digitsstringThe canonical 8-digit IČO.

API reference

GET /v1/sk/person

Try on playground

Returns 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

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD.
caseStrictbooleanDefaults to true (proper casing). Set false to deliberately mangle the casing of name and surname; initials stay proper uppercase.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias the number and name shape toward their rarely-exercised corners.
extremebooleanReturn 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.
invalidbooleanReturn a person whose rodné číslo has a deliberately wrong check value.
olderThanintegerMinimum age in years at request time.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
sex"m" | "f"Encoded sex: "m" or "f".
youngerThanintegerMaximum age in years at request time.

Request

GET /v1/sk/person
curl https://api.real-fake-data.com/v1/sk/person

Response fields

FieldTypeDescription
namestringGiven (first) name(s).
surnamestringSurname.
initialsstringUppercase initials of name and surname, no dots.
birthDatestringThe birth date, ISO `YYYY-MM-DD`.
rodneCislostringThe matching rodné číslo.

API reference

GET /v1/sk/person-name

Try on playground

Returns 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

ParameterTypeDescription
caseStrictbooleanDefaults 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.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias toward edge-case name shapes (second given names, double surnames, short names).
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger 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

GET /v1/sk/person-name
curl https://api.real-fake-data.com/v1/sk/person-name

Response fields

FieldTypeDescription
namestringGiven (first) name(s), in the local script, agreeing with the reported sex.
surnamestringSurname in the form matching the sex (inflected where the language requires it).
initialsstringUppercase 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict to edge-case offerings (price-band extremes, unusual units, long names).
extremebooleanReturn 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.
industryNamestringFull-text filter: keep offerings whose localized industry label contains this.
invalidbooleanReturn 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.
offeringNamestringFull-text filter: keep offerings whose localized name contains this.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
type"product" | "service"Restrict to products or services. Omit for both.

Request

GET /v1/sk/offering
curl https://api.real-fake-data.com/v1/sk/offering

Response fields

FieldTypeDescription
valuestringThe offering name in the resolved language.
offeringNamestringThe full offering name (alias of `value`).
kind"product" | "service"Whether it is a good or a rendered service.
unitstringThe unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …).
priceintegerA single plausible price, in EUR minor units (cents).
currency"EUR"Currency of `price`; always EUR.
industryCodestringNACE Rev. 2.1 code of the offering’s industry.
industryNamestringThe localized industry label in the resolved language.
languagestringBCP-47 subtag used for this record’s names.

API reference

GET /v1/sk/rodne-cislo

Try on playground

Returns 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

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case values.
extremebooleanReturn 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`.
invalidbooleanReturn a number with a deliberately wrong check; date/sex stay valid.
olderThanintegerMinimum age in years at request time.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
sex"m" | "f"Encoded sex: "m" or "f".
youngerThanintegerMaximum age in years at request time.

Request

GET /v1/sk/rodne-cislo
curl https://api.real-fake-data.com/v1/sk/rodne-cislo

Response fields

FieldTypeDescription
valuestringThe number in the requested format (plain or `YYMMDD/SSSC`).
digitsstringThe canonical 10-digit number.
birthDatestringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
districtstringRestrict a legacy/both plate to a named district (okres), e.g. Košice. Unknown names are a 400.
edgebooleanRestrict 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.
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
regionstringRestrict a legacy/both plate to a named region (kraj), e.g. Bratislavský. Unknown names are a 400.
seedintegerInteger 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

GET /v1/sk/vehicle-registration
curl https://api.real-fake-data.com/v1/sk/vehicle-registration

Response fields

FieldTypeDescription
valuestringThe 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.
regionoptionalstringThe genuine region (kraj) of the plate's district code; present only for a legacy district-coded plate.
districtoptionalstringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case values from the rare corners.
extremebooleanReturn 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.
invalidbooleanCorrupt 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.
seedintegerInteger 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

GET /v1/si/company
curl https://api.real-fake-data.com/v1/si/company

Response fields

FieldTypeDescription
namestringThe full company name, including any prefix and legal form.
legalFormstringThe appended legal form, or `null` when none was added.
davcnaStevilkastringThe matching davcna-stevilka identifier.

API reference

GET /v1/si/company-name

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case names (punctuation-heavy families, long/rare forms).
extremebooleanReturn 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.
invalidbooleanReturn 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.
seedintegerInteger 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

GET /v1/si/company-name
curl https://api.real-fake-data.com/v1/si/company-name

Response fields

FieldTypeDescription
valuestringThe full company name, including any prefix and legal form.
legalFormstringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case tax numbers from the rare corners.
extremebooleanReturn 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.
invalidbooleanReturn a tax number with a deliberately wrong check digit.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/si/davcna-stevilka
curl https://api.real-fake-data.com/v1/si/davcna-stevilka

Response fields

FieldTypeDescription
valuestringThe tax number in the requested format (national or VAT).
digitsstringThe canonical, unprefixed 8-digit tax number.

API reference

GET /v1/si/email

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
domainstringpattern ^[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.
edgebooleanRestrict output to edge-case addresses from the rare corners of the format.
exoticbooleanAllow rarer RFC-valid local-part characters (%, =, ~). Off by default.
extremebooleanReturn 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.
invalidbooleanReturn 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.
plusTagstringpattern ^[A-Za-z0-9_-]+$Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/si/email
curl https://api.real-fake-data.com/v1/si/email

Response fields

FieldTypeDescription
valuestringThe full email address, e.g. "anna.schmidt+news@mueller-bau.de".
localPartstringThe part before the `@`, including any plus tag.
domainstringThe 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.
companystringThe company name a corporate domain or company local-part was derived from, or `null`.
plusTagstringThe plus-addressing tag, or `null` when none.

API reference

GET /v1/si/emso

Try on playground

Returns 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

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case values.
extremebooleanReturn 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.
invalidbooleanReturn an EMŠO with a deliberately wrong check digit; date/sex stay valid.
olderThanintegerMinimum age in years at request time.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
sex"m" | "f"Encoded sex: "m" or "f".
youngerThanintegerMaximum age in years at request time.

Request

GET /v1/si/emso
curl https://api.real-fake-data.com/v1/si/emso

Response fields

FieldTypeDescription
valuestringThe EMŠO rendered as the bare 13 digits.
digitsstringThe canonical 13-digit EMŠO.
birthDatestringThe 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 playground

Returns 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

ParameterTypeDescription
bankCodestringPin the issuing bank by its 2-digit bank code. Mutually exclusive with bankName.
bankNamestringPin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case IBANs from the rare corners of the format.
extremebooleanReturn 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.
invalidbooleanReturn an IBAN with deliberately wrong check digits, for testing validators.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/si/iban
curl https://api.real-fake-data.com/v1/si/iban

Response fields

FieldTypeDescription
valuestringThe IBAN in the requested format.
electronicFormatstringThe space-free electronic form of the IBAN.
bankCodestringThe bank identifier embedded in the IBAN.
bankNamestringHuman-readable name of the issuing bank.

API reference

GET /v1/si/person

Try on playground

Returns 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

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD.
caseStrictbooleanDefaults to true (proper casing). Set false to deliberately mangle the casing of name and surname; initials stay proper uppercase.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias the number and name shape toward their rarely-exercised corners.
extremebooleanReturn 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.
invalidbooleanReturn a person whose EMŠO has a deliberately wrong check value.
olderThanintegerMinimum age in years at request time.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
sex"m" | "f"Encoded sex: "m" or "f".
youngerThanintegerMaximum age in years at request time.

Request

GET /v1/si/person
curl https://api.real-fake-data.com/v1/si/person

Response fields

FieldTypeDescription
namestringGiven (first) name(s).
surnamestringSurname.
initialsstringUppercase initials of name and surname, no dots.
birthDatestringThe birth date, ISO `YYYY-MM-DD`.
emsostringThe matching EMŠO.

API reference

GET /v1/si/person-name

Try on playground

Returns 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

ParameterTypeDescription
caseStrictbooleanDefaults 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.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias toward edge-case name shapes (second given names, double surnames, short names).
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger 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

GET /v1/si/person-name
curl https://api.real-fake-data.com/v1/si/person-name

Response fields

FieldTypeDescription
namestringGiven (first) name(s), in the local script, agreeing with the reported sex.
surnamestringSurname in the form matching the sex (inflected where the language requires it).
initialsstringUppercase 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict to edge-case offerings (price-band extremes, unusual units, long names).
extremebooleanReturn 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.
industryNamestringFull-text filter: keep offerings whose localized industry label contains this.
invalidbooleanReturn 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.
offeringNamestringFull-text filter: keep offerings whose localized name contains this.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
type"product" | "service"Restrict to products or services. Omit for both.

Request

GET /v1/si/offering
curl https://api.real-fake-data.com/v1/si/offering

Response fields

FieldTypeDescription
valuestringThe offering name in the resolved language.
offeringNamestringThe full offering name (alias of `value`).
kind"product" | "service"Whether it is a good or a rendered service.
unitstringThe unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …).
priceintegerA single plausible price, in EUR minor units (cents).
currency"EUR"Currency of `price`; always EUR.
industryCodestringNACE Rev. 2.1 code of the offering’s industry.
industryNamestringThe localized industry label in the resolved language.
languagestringBCP-47 subtag used for this record’s names.

API reference

GET /v1/si/vehicle-registration

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case plates from the rare corners of the format.
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
regionstringRestrict 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.
seedintegerInteger 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

GET /v1/si/vehicle-registration
curl https://api.real-fake-data.com/v1/si/vehicle-registration

Response fields

FieldTypeDescription
valuestringThe 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.
regionoptionalstringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case CIFs from the rare corners.
extremebooleanReturn 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.
invalidbooleanReturn a CIF with a deliberately wrong control character.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/es/cif
curl https://api.real-fake-data.com/v1/es/cif

Response fields

FieldTypeDescription
valuestringThe CIF in the requested format (national or ES VAT).
digitsstringThe canonical national CIF (letter + 7 digits + control).

API reference

GET /v1/es/company

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case values from the rare corners.
extremebooleanReturn 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.
invalidbooleanCorrupt 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.
seedintegerInteger 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

GET /v1/es/company
curl https://api.real-fake-data.com/v1/es/company

Response fields

FieldTypeDescription
namestringThe full company name, including any prefix and legal form.
legalFormstringThe appended legal form, or `null` when none was added.
cifstringThe matching cif identifier.

API reference

GET /v1/es/company-name

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case names (punctuation-heavy families, long/rare forms).
extremebooleanReturn 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.
invalidbooleanReturn 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.
seedintegerInteger 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

GET /v1/es/company-name
curl https://api.real-fake-data.com/v1/es/company-name

Response fields

FieldTypeDescription
valuestringThe full company name, including any prefix and legal form.
legalFormstringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case DNIs from the rare corners.
extremebooleanReturn 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.
invalidbooleanReturn a DNI with a deliberately wrong control letter.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/es/dni
curl https://api.real-fake-data.com/v1/es/dni

Response fields

FieldTypeDescription
valuestringThe full DNI: 8 digits followed by the control letter.
digitsstringThe canonical 8-digit body, leading zeros preserved.
letterstringThe single control letter from `TRWAGMYFPDXBNJZSQVHLCKE`.

API reference

GET /v1/es/email

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
domainstringpattern ^[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.
edgebooleanRestrict output to edge-case addresses from the rare corners of the format.
exoticbooleanAllow rarer RFC-valid local-part characters (%, =, ~). Off by default.
extremebooleanReturn 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.
invalidbooleanReturn 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.
plusTagstringpattern ^[A-Za-z0-9_-]+$Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/es/email
curl https://api.real-fake-data.com/v1/es/email

Response fields

FieldTypeDescription
valuestringThe full email address, e.g. "anna.schmidt+news@mueller-bau.de".
localPartstringThe part before the `@`, including any plus tag.
domainstringThe 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.
companystringThe company name a corporate domain or company local-part was derived from, or `null`.
plusTagstringThe plus-addressing tag, or `null` when none.

API reference

GET /v1/es/iban

Try on playground

Returns 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

ParameterTypeDescription
bankCodestringPin the issuing bank by its 4-digit entidad code. Mutually exclusive with bankName.
bankNamestringPin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case IBANs from the rare corners of the format.
extremebooleanReturn 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.
invalidbooleanReturn an IBAN with deliberately wrong check digits, for testing validators.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/es/iban
curl https://api.real-fake-data.com/v1/es/iban

Response fields

FieldTypeDescription
valuestringThe IBAN in the requested format.
electronicFormatstringThe space-free electronic form of the IBAN.
bankCodestringThe bank identifier embedded in the IBAN.
bankNamestringHuman-readable name of the issuing bank.

API reference

GET /v1/es/nie

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case NIEs from the rare corners.
extremebooleanReturn 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.
invalidbooleanReturn a NIE with a deliberately wrong control letter.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/es/nie
curl https://api.real-fake-data.com/v1/es/nie

Response fields

FieldTypeDescription
valuestringThe full NIE: prefix + 7 digits + control letter.
prefixstringThe prefix letter, one of `X`, `Y`, `Z`.
digitsstringThe 7-digit body, leading zeros preserved.
letterstringThe single control letter from `TRWAGMYFPDXBNJZSQVHLCKE`.

API reference

GET /v1/es/person

Try on playground

Returns 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

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD.
caseStrictbooleanDefaults to true (proper casing). Set false to deliberately mangle the casing of name and surname; initials stay proper uppercase.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias the number and name shape toward their rarely-exercised corners.
extremebooleanReturn 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.
invalidbooleanReturn a person whose DNI has a deliberately wrong check value.
olderThanintegerMinimum age in years at request time.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
sex"m" | "f"Encoded sex: "m" or "f".
youngerThanintegerMaximum age in years at request time.

Request

GET /v1/es/person
curl https://api.real-fake-data.com/v1/es/person

Response fields

FieldTypeDescription
namestringGiven (first) name(s).
surnamestringSurname.
initialsstringUppercase initials of name and surname, no dots.
birthDatestringThe birth date, ISO `YYYY-MM-DD`.
dnistringThe matching DNI.

API reference

GET /v1/es/person-name

Try on playground

Returns 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

ParameterTypeDescription
caseStrictbooleanDefaults 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.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias toward edge-case name shapes (second given names, double surnames, short names).
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger 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

GET /v1/es/person-name
curl https://api.real-fake-data.com/v1/es/person-name

Response fields

FieldTypeDescription
namestringGiven (first) name(s), in the local script, agreeing with the reported sex.
surnamestringSurname in the form matching the sex (inflected where the language requires it).
initialsstringUppercase 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict to edge-case offerings (price-band extremes, unusual units, long names).
extremebooleanReturn 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.
industryNamestringFull-text filter: keep offerings whose localized industry label contains this.
invalidbooleanReturn 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.
offeringNamestringFull-text filter: keep offerings whose localized name contains this.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
type"product" | "service"Restrict to products or services. Omit for both.

Request

GET /v1/es/offering
curl https://api.real-fake-data.com/v1/es/offering

Response fields

FieldTypeDescription
valuestringThe offering name in the resolved language.
offeringNamestringThe full offering name (alias of `value`).
kind"product" | "service"Whether it is a good or a rendered service.
unitstringThe unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …).
priceintegerA single plausible price, in EUR minor units (cents).
currency"EUR"Currency of `price`; always EUR.
industryCodestringNACE Rev. 2.1 code of the offering’s industry.
industryNamestringThe localized industry label in the resolved language.
languagestringBCP-47 subtag used for this record’s names.

API reference

GET /v1/es/vehicle-registration

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict 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.
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
provincestringForce the legacy provincial code to a province (e.g. Madrid, Barcelona). Legacy/both eras, standard/motorcycle only.
seedintegerInteger 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

GET /v1/es/vehicle-registration
curl https://api.real-fake-data.com/v1/es/vehicle-registration

Response fields

FieldTypeDescription
valuestringThe 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).
provinceoptionalstringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case values from the rare corners.
extremebooleanReturn 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.
invalidbooleanCorrupt 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.
seedintegerInteger 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

GET /v1/se/company
curl https://api.real-fake-data.com/v1/se/company

Response fields

FieldTypeDescription
namestringThe full company name, including any prefix and legal form.
legalFormstringThe appended legal form, or `null` when none was added.
organisationsnummerstringThe matching organisationsnummer identifier.

API reference

GET /v1/se/company-name

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case names (punctuation-heavy families, long/rare forms).
extremebooleanReturn 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.
invalidbooleanReturn 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.
seedintegerInteger 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

GET /v1/se/company-name
curl https://api.real-fake-data.com/v1/se/company-name

Response fields

FieldTypeDescription
valuestringThe full company name, including any prefix and legal form.
legalFormstringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
domainstringpattern ^[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.
edgebooleanRestrict output to edge-case addresses from the rare corners of the format.
exoticbooleanAllow rarer RFC-valid local-part characters (%, =, ~). Off by default.
extremebooleanReturn 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.
invalidbooleanReturn 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.
plusTagstringpattern ^[A-Za-z0-9_-]+$Plus-addressing tag: "true" adds a random tag, "false" none, any other value is used verbatim.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/se/email
curl https://api.real-fake-data.com/v1/se/email

Response fields

FieldTypeDescription
valuestringThe full email address, e.g. "anna.schmidt+news@mueller-bau.de".
localPartstringThe part before the `@`, including any plus tag.
domainstringThe 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.
companystringThe company name a corporate domain or company local-part was derived from, or `null`.
plusTagstringThe plus-addressing tag, or `null` when none.

API reference

GET /v1/se/iban

Try on playground

Returns 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

ParameterTypeDescription
bankCodestringPin the issuing bank by its 3-digit bank code. Mutually exclusive with bankName.
bankNamestringPin the issuing bank by a case-insensitive name fragment. Mutually exclusive with bankCode.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case IBANs from the rare corners of the format.
extremebooleanReturn 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.
invalidbooleanReturn an IBAN with deliberately wrong check digits, for testing validators.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/se/iban
curl https://api.real-fake-data.com/v1/se/iban

Response fields

FieldTypeDescription
valuestringThe IBAN in the requested format.
electronicFormatstringThe space-free electronic form of the IBAN.
bankCodestringThe bank identifier embedded in the IBAN.
bankNamestringHuman-readable name of the issuing bank.

API reference

GET /v1/se/organisationsnummer

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to valid edge-case organisationsnummer from the rare corners.
extremebooleanReturn 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.
invalidbooleanReturn a number with a deliberately wrong Luhn check digit.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.

Request

GET /v1/se/organisationsnummer
curl https://api.real-fake-data.com/v1/se/organisationsnummer

Response fields

FieldTypeDescription
valuestringThe identifier in the requested format (national or VAT).
digitsstringThe canonical, unprefixed 10-digit number.

API reference

GET /v1/se/person

Try on playground

Returns 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

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD.
caseStrictbooleanDefaults to true (proper casing). Set false to deliberately mangle the casing of name and surname; initials stay proper uppercase.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias the number and name shape toward their rarely-exercised corners.
extremebooleanReturn 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.
invalidbooleanReturn a person whose personnummer has a deliberately wrong check value.
olderThanintegerMinimum age in years at request time.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
sex"m" | "f"Encoded sex: "m" or "f".
youngerThanintegerMaximum age in years at request time.

Request

GET /v1/se/person
curl https://api.real-fake-data.com/v1/se/person

Response fields

FieldTypeDescription
namestringGiven (first) name(s).
surnamestringSurname.
initialsstringUppercase initials of name and surname, no dots.
birthDatestringThe birth date, ISO `YYYY-MM-DD`.
personnummerstringThe matching personnummer.

API reference

GET /v1/se/person-name

Try on playground

Returns 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

ParameterTypeDescription
caseStrictbooleanDefaults 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.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanBias toward edge-case name shapes (second given names, double surnames, short names).
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger 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

GET /v1/se/person-name
curl https://api.real-fake-data.com/v1/se/person-name

Response fields

FieldTypeDescription
namestringGiven (first) name(s), in the local script, agreeing with the reported sex.
surnamestringSurname in the form matching the sex (inflected where the language requires it).
initialsstringUppercase 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 playground

Returns 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

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD.
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict output to edge-case values.
extremebooleanReturn 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`.
invalidbooleanReturn 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`.
olderThanintegerMinimum age in years at request time.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
sex"m" | "f"Encoded sex: "m" or "f".
youngerThanintegerMaximum age in years at request time.

Request

GET /v1/se/personnummer
curl https://api.real-fake-data.com/v1/se/personnummer

Response fields

FieldTypeDescription
valuestringThe number in the requested format (short or long).
digitsstringThe canonical 10-digit `YYMMDDNNNC`, no separator.
birthDatestringThe 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 playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict to edge-case offerings (price-band extremes, unusual units, long names).
extremebooleanReturn 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.
industryNamestringFull-text filter: keep offerings whose localized industry label contains this.
invalidbooleanReturn 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.
offeringNamestringFull-text filter: keep offerings whose localized name contains this.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
type"product" | "service"Restrict to products or services. Omit for both.

Request

GET /v1/se/offering
curl https://api.real-fake-data.com/v1/se/offering

Response fields

FieldTypeDescription
valuestringThe offering name in the resolved language.
offeringNamestringThe full offering name (alias of `value`).
kind"product" | "service"Whether it is a good or a rendered service.
unitstringThe unit the price is quoted per — a canonical symbol (`pc`, `month`, `kg`, …).
priceintegerA single plausible price, in EUR minor units (cents).
currency"EUR"Currency of `price`; always EUR.
industryCodestringNACE Rev. 2.1 code of the offering’s industry.
industryNamestringThe localized industry label in the resolved language.
languagestringBCP-47 subtag used for this record’s names.

API reference

GET /v1/se/vehicle-registration

Try on playground

Returns 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

ParameterTypeDescription
countinteger1–1000Number of records to return, 1–1000 (your plan may lower this). Omitted returns a single record; set it for a batch.
edgebooleanRestrict 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.
extremebooleanReturn 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.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
seedintegerInteger 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

GET /v1/se/vehicle-registration
curl https://api.real-fake-data.com/v1/se/vehicle-registration

Response fields

FieldTypeDescription
valuestringThe 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.