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
| Request | Returns |
|---|---|
GET /topics | List of topics and limits (no key needed) |
POST /key | A new API key |
GET /{topic} | Paginated list, 100 items per topic |
GET /{topic}/{id} | One item, id 1 to 100 |
Topics
| Topic | Data |
|---|---|
users | Profiles with address, preferences, security |
products | Catalog with variants, reviews, shipping |
posts | Blog posts with comments and SEO |
todos | Tasks with subtasks and time tracking |
orders | Orders with items, payment, shipments |
transactions | Bank transactions with merchant and FX data |
movies | Fictional movies with cast and box office |
recipes | Recipes with steps and nutrition |
weather | Current weather, hourly and daily forecasts |
events | Events with speakers, tickets, schedule |
Query parameters
| Parameter | Meaning |
|---|---|
level | simple (default), medium or complex |
page | Page number, default 1 |
per_page | 1 to 50, default 10 |
seed | Integer. Different seeds give different but repeatable data |
api_key | Alternative 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
| Status | Meaning |
|---|---|
| 401 | Missing or invalid API key |
| 404 | Unknown topic or item id |
| 429 | Rate 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.