Fake API & Mock Data Generator

Free fake REST API for developers. Create an API key in one click and get realistic sample data in three structure formats: simple, medium and complex. Use it for mobile apps, iOS and Android prototypes, website designs, tutorials and tests. No sign-up needed.

Loading playground…

Base URL

https://freetoolza.com/wp-json/freetoolza/v1

Authentication

Create a key with the button above, or call POST https://freetoolza.com/wp-json/freetoolza/v1/key. Send it with every data request in the X-API-Key header. Authorization: Bearer KEY and ?api_key=KEY also work. GET /topics is public and needs no key.

Keys only unlock fake sample data. Never put real user data or secrets into this API.

Endpoints

RequestReturns
GET /topicsList of topics and limits (no key needed)
POST /keyA new API key
GET /{topic}Paginated list, 100 items per topic
GET /{topic}/{id}One item, id 1 to 100

Topics

TopicData
usersProfiles with address, preferences, security
productsCatalog with variants, reviews, shipping
postsBlog posts with comments and SEO
todosTasks with subtasks and time tracking
ordersOrders with items, payment, shipments
transactionsBank transactions with merchant and FX data
moviesFictional movies with cast and box office
recipesRecipes with steps and nutrition
weatherCurrent weather, hourly and daily forecasts
eventsEvents with speakers, tickets, schedule

Query parameters

ParameterMeaning
levelsimple (default), medium or complex
pagePage number, default 1
per_page1 to 50, default 10
seedInteger. Different seeds give different but repeatable data
api_keyAlternative to the header, for quick browser tests

The three formats

Simple

Flat fields and a bare array or object. Best for first prototypes, list screens and learning.

GET /users/1?level=simple
{
  "id": 1, "name": "Aarav Sharma", "email": "aarav.sharma42@example.com",
  "username": "aarav.sharma42", "age": 31, "city": "Mumbai",
  "avatar": "https://i.pravatar.cc/150?img=12"
}

Medium

Nested objects and arrays inside a standard envelope with count and pagination. Best for real app screens.

GET /users?level=medium&per_page=1
{
  "status": "success", "count": 1, "page": 1, "per_page": 1, "total": 100,
  "data": [{
    "id": 1, "name": "Aarav Sharma", "roles": ["user"],
    "address": { "street": "12 Park Street", "city": "Mumbai", "country": "India" },
    "preferences": { "theme": "dark", "notifications": { "email": true, "push": false } },
    "created_at": "2025-03-02T10:15:00Z"
  }]
}

Complex

Deep nesting, related entities, metadata and hypermedia links, like a production API. Best for testing parsing, models and edge cases.

GET /users?level=complex&per_page=1
{
  "success": true,
  "data": { "items": [{
    "id": 1, "name": "Aarav Sharma",
    "profile": { "bio": "...", "social": { "github": "aarav" }, "skills": [{ "name": "Swift", "level": 4 }] },
    "employment": { "title": "Engineer", "company": { "id": 7, "name": "Northwind Labs" } },
    "security": { "two_factor_enabled": true, "sessions": [{ "platform": "ios", "active": true }] },
    "links": { "self": "/users/1", "posts": "/posts?author_id=1" }
  }]},
  "meta": { "request_id": "req_ab12cd34ef56", "timestamp": "2026-10-21T12:00:00+00:00", "api_version": "v1",
    "pagination": { "page": 1, "per_page": 1, "total_items": 100, "total_pages": 100, "has_next": true, "has_prev": false } },
  "links": { "self": "...", "first": "...", "last": "...", "next": "...", "prev": null }
}

Rate limits

Each key can make 120 requests per minute. Responses include X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset. Over the limit you get HTTP 429. Each network can create 10 keys per hour.

Errors

StatusMeaning
401Missing or invalid API key
404Unknown topic or item id
429Rate limit or key limit reached

Use it in your app

iOS (Swift)

var request = URLRequest(url: URL(string: "https://freetoolza.com/wp-json/freetoolza/v1/products?level=medium")!)
request.setValue("YOUR_API_KEY", forHTTPHeaderField: "X-API-Key")
let (data, _) = try await URLSession.shared.data(for: request)
let json = try JSONSerialization.jsonObject(with: data)

Android (Kotlin, OkHttp)

val request = Request.Builder()
    .url("https://freetoolza.com/wp-json/freetoolza/v1/products?level=medium")
    .addHeader("X-API-Key", "YOUR_API_KEY")
    .build()
OkHttpClient().newCall(request).execute().use { println(it.body?.string()) }

Website (JavaScript)

const res = await fetch("https://freetoolza.com/wp-json/freetoolza/v1/todos?level=simple", {
  headers: { "X-API-Key": "YOUR_API_KEY" }
});
const todos = await res.json();

CORS is open, so browser apps, web views and design tools such as Framer or Figma plugins can call the API directly.

FAQ

Is the data random every time?

No. The same topic, id and seed always return the same item, so your UI tests stay stable. Change seed for a new set.

Can I write or delete data?

No. The API is read-only. Use it for designing and testing read screens.

Is it free?

Yes, within the rate limits. Do not use it for production traffic.

Are the people and companies real?

No. All names, emails and companies are invented and use example domains. Images come from placeholder services.