Skip to main content

Random User Data API

MOCK DATA

Complete fake people — name, age-consistent birth date, email, phone, job and address — with working filters for gender, age range and email domain.

Generated test data for fixtures and development

Base URL
/api/users
Category
People
Capabilities
1 route Seedable 8 locales
Last updated
July 30, 2026

GET /api/users

Live requestRuns against the public API
No key required
GET/api/users?count=3&seed=42

Request parameters

Only generate this gender. Omit for a mix.

Minimum age (inclusive).

Maximum age (inclusive). Must be ≥ minAge.

Email domain override (e.g. acme.test). Defaults to RFC 2606 reserved domains that can never deliver mail.

Advanced response options8 options

How many records to generate (1–100).

Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed).

Locale for the generated data (names, addresses, …).

Return only these fields (comma-separated). Mutually exclusive with 'exclude'.

Return all fields except these (comma-separated).

Response format: json envelope, ndjson (one record per line) or csv.

Pretty-print the JSON response.

Drop the envelope: return the raw array/object without data/meta wrapper.

Response

Example parameters are ready. Send the request to inspect the live response.

Route reference

Code samples Ready-to-copy requests in 4 languages
Choose a code sample language
curl "https://randomapi.dev/api/users?count=3&seed=42"
const res = await fetch("https://randomapi.dev/api/users?count=3&seed=42");
const { data, meta } = await res.json();
import requests

data = requests.get("https://randomapi.dev/api/users?count=3&seed=42").json()["data"]
$json = json_decode(file_get_contents(
  "https://randomapi.dev/api/users?count=3&seed=42"
), true);
$data = $json["data"];
Parameters Route-specific request inputs 4
gender enum

Only generate this gender. Omit for a mix.

allowed: male | female
example: gender=female
minAge int

Minimum age (inclusive).

default: 18
allowed: 0 – 120
example: minAge=21
maxAge int

Maximum age (inclusive). Must be ≥ minAge.

default: 80
allowed: 0 – 120
example: maxAge=65
domain string

Email domain override (e.g. acme.test). Defaults to RFC 2606 reserved domains that can never deliver mail.

example: domain=acme.test
Universal parameters Shared response and formatting options 8
count int

How many records to generate (1–100).

default: 10
allowed: 1 – 100
example: count=3
seed int

Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed).

example: seed=42
locale enum

Locale for the generated data (names, addresses, …).

default: en
allowed: en | da | de | fr | es | it | pt | ja
example: locale=da
fields list

Return only these fields (comma-separated). Mutually exclusive with 'exclude'.

example: fields=id,firstName
exclude list

Return all fields except these (comma-separated).

example: exclude=address
format enum

Response format: json envelope, ndjson (one record per line) or csv.

default: json
allowed: json | ndjson | csv
example: format=csv
pretty boolean

Pretty-print the JSON response.

default: false
example: pretty=true
unwrap boolean

Drop the envelope: return the raw array/object without data/meta wrapper.

default: false
example: unwrap=true
Response schema Fields returned in each record 13
id string (UUID v4)

Stable per seed+index.

example: 0b9a3f2e-6d1c-4a8b-9f2e-3d1c4a8b9f2e

firstName string

Given name (locale-aware).

example: Emily

lastName string

Family name (locale-aware).

example: Carter

fullName string

firstName + lastName.

example: Emily Carter

gender string

male | female — matches the name.

example: female

birthDate string (YYYY-MM-DD)

Consistent with age (relative to request time).

example: 1994-04-12

age integer

Age in whole years, within minAge..maxAge.

example: 32

email string

Derived from the name; non-deliverable domain by default.

example: emily.carter@example.com

phone string

Locale-formatted phone number (fake).

example: +1 555 028 4821

username string

Derived from the name.

example: emily.carter94

avatarUrl string (URL)

Ready-to-use avatar from this platform's avatar API.

example: https://randomapi.dev/api/avatars/image?style=initials&seed=emilycarter&name=Emily%20Carter

jobTitle string

Plausible job title.

example: Senior Product Designer

address object

Nested address: street, city, state (nullable), zipCode, country, countryCode, latitude, longitude.

example: {"street":"883 Maple Avenue","city":"Portland","state":"Oregon","zipCode":"97205","country":"United States","countryCode":"US","latitude":45.5152,"longitude":-122.6784}

Documented examples

Build-generated requests and complete responses
3
Three reproducible users
GET /api/users?count=3&seed=42
{
  "data": [
    {
      "id": "22019cec-2f1f-41b4-b62a-dd96ac094977",
      "firstName": "Mayra",
      "lastName": "Ziemann",
      "fullName": "Mayra Ziemann",
      "gender": "male",
      "birthDate": "1965-12-24",
      "age": 60,
      "email": "mayra.ziemann@example.com",
      "phone": "+12758414994",
      "username": "mayra.ziemann65",
      "avatarUrl": "https://randomapi.dev/api/avatars/image?style=initials&seed=mayraziemann&name=Mayra%20Ziemann",
      "jobTitle": "District Accounts Associate",
      "address": {
        "street": "856 W Broad Street",
        "city": "Boscoburgh",
        "state": "Indiana",
        "zipCode": "52410-2119",
        "country": "Eritrea",
        "countryCode": "HK",
        "latitude": -89.7695,
        "longitude": 39.9593
      }
    },
    {
      "id": "c68f36bd-0b5e-4920-bb14-20de7a85dc4d",
      "firstName": "Skyla",
      "lastName": "Friesen",
      "fullName": "Skyla Friesen",
      "gender": "male",
      "birthDate": "2008-02-18",
      "age": 18,
      "email": "skyla.friesen@example.net",
      "phone": "+12969326004",
      "username": "skyla.friesen08",
      "avatarUrl": "https://randomapi.dev/api/avatars/image?style=initials&seed=skylafriesen&name=Skyla%20Friesen",
      "jobTitle": "Senior Implementation Technician",
      "address": {
    …
    "generatedAt": "2026-07-30T15:14:08.000Z"
  }
}
Danish women aged 21–35
GET /api/users?locale=da&gender=female&minAge=21&maxAge=35&count=5
{
  "data": [
    {
      "id": "422019ce-c2f1-4f1b-9462-add96ac09497",
      "firstName": "Maren",
      "lastName": "Frandsen",
      "fullName": "Maren Frandsen",
      "gender": "female",
      "birthDate": "1997-11-25",
      "age": 28,
      "email": "maren.frandsen@example.net",
      "phone": "+4590758414",
      "username": "maren.frandsen97",
      "avatarUrl": "https://randomapi.dev/api/avatars/image?style=initials&seed=marenfrandsen&name=Maren%20Frandsen",
      "jobTitle": "Chief Usability Architect",
      "address": {
        "street": "Kærvej 19A",
        "city": "Taulov",
        "state": "Syddanmark",
        "zipCode": "5678",
        "country": "Qatar",
        "countryCode": "UZ",
        "latitude": -64.7018,
        "longitude": -146.6857
      }
    },
    {
      "id": "c68f36bd-0b5e-4920-bb14-20de7a85dc4d",
      "firstName": "Sanne",
      "lastName": "Dalgaard-Dam",
      "fullName": "Sanne Dalgaard-Dam",
      "gender": "female",
      "birthDate": "2005-07-27",
      "age": 21,
      "email": "sanne.dalgaarddam@example.net",
      "phone": "+4529693260",
      "username": "sanne.dalgaarddam05",
      "avatarUrl": "https://randomapi.dev/api/avatars/image?style=initials&seed=sannedalgaarddam&name=Sanne%20Dalgaard-Dam",
      "jobTitle": "Senior Group Associate",
      "address": {
    …
    "generatedAt": "2026-07-30T15:14:08.000Z"
  }
}
Only name + email, custom domain
GET /api/users?fields=fullName,email&domain=acme.test&count=10
{
  "data": [
    {
      "fullName": "Mayra Ziemann",
      "email": "mayra.ziemann@acme.test"
    },
    {
      "fullName": "Skyla Friesen",
      "email": "skyla.friesen@acme.test"
    },
    {
      "fullName": "Korey Steuber",
      "email": "korey.steuber@acme.test"
    },
    {
      "fullName": "Gianni Jacobson",
      "email": "gianni.jacobson@acme.test"
    },
    {
      "fullName": "Nicola Oberbrunner-Funk",
      "email": "nicola.oberbrunnerfunk@acme.test"
    },
    {
      "fullName": "Seth Howell",
      "email": "seth.howell@acme.test"
    },
    {
      "fullName": "Jordan Wunsch",
      "email": "jordan.wunsch@acme.test"
    },
    {
      "fullName": "Chloe Osinski",
      "email": "chloe.osinski@acme.test"
    },
    {
      "fullName": "Rafael Wilkinson",
      "email": "rafael.wilkinson@acme.test"
    },
    {
      "fullName": "Stella Adams",
    …
    "generatedAt": "2026-07-30T15:14:08.000Z"
  }
}

About this API

Coverage & behavior

Generates complete, internally-consistent fake people: the birthDate always matches the age, the email and username derive from the actual name, and the avatarUrl points at this platform's own avatar generator so it renders anywhere.

All filters genuinely constrain the output: gender, minAge/maxAge and domain are honored for every record, and locale switches names, addresses and phone formats to one of 8 locales. With a seed the same request returns byte-identical people forever — ideal for reproducible tests and demos.

Use it for

  • Seed a development database with realistic user accounts
  • Fill UI mockups and demos with believable people
  • Reproducible test fixtures via seed (same users in every CI run)

Frequently asked questions

Is the age consistent with the birth date?

Yes — age is derived from birthDate at request time, so the two never disagree (a classic fixture bug we contract-test away).

Can I control the email domain?

Yes — domain=myapp.test stamps every user's email; by default emails use reserved non-deliverable domains, so staging can never mail a stranger.

Which filters actually work?

gender (strict), minAge/maxAge (bounds the derived age) and domain — every one is honored and echoed back under meta.params.

How do I get stable users across test runs?

Use seed with count (up to 100) — the same seed always returns the same users in the same order.

Standards & references