Skip to main content

Fake Product Review API

MOCK DATA

Sentiment-coherent fake product reviews — 1–2★ complain, 3★ shrug, 4–5★ rave — with star-rating and date-range filters and full seed determinism.

Generated test data for fixtures and development

Base URL
/api/reviews
Capabilities
1 route Seedable
Last updated
July 29, 2026

GET /api/reviews

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

Request parameters

Lowest star rating to generate (inclusive).

Highest star rating to generate (inclusive). Must be ≥ minRating.

Earliest review date (YYYY-MM-DD, inclusive; times are truncated to the UTC day). Defaults to 365 days before today. Must be ≤ to.

Latest review date (YYYY-MM-DD, inclusive; times are truncated to the UTC day). Defaults to today (UTC).

Advanced response options7 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).

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/reviews?count=10&seed=42"
const res = await fetch("https://randomapi.dev/api/reviews?count=10&seed=42");
const { data, meta } = await res.json();
import requests

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

Lowest star rating to generate (inclusive).

default: 1
allowed: 1 – 5
example: minRating=4
maxRating int

Highest star rating to generate (inclusive). Must be ≥ minRating.

default: 5
allowed: 1 – 5
example: maxRating=5
from date

Earliest review date (YYYY-MM-DD, inclusive; times are truncated to the UTC day). Defaults to 365 days before today. Must be ≤ to.

example: from=2026-01-01
to date

Latest review date (YYYY-MM-DD, inclusive; times are truncated to the UTC day). Defaults to today (UTC).

example: to=2026-03-31
Universal parameters Shared response and formatting options 7
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
fields list

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

example: fields=rating,title
exclude list

Return all fields except these (comma-separated).

example: exclude=helpfulCount
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 7
rating integer

Star rating within minRating..maxRating. Unclamped distribution is J-shaped: ~40% 5★, ~20% 1★.

example: 5

title string

Short headline built strictly from the rating's sentiment word pool.

example: Simply wonderful

body string

2–3 sentence review text, sentiment-coherent with the rating: 4–5★ praise, 3★ lukewarm, 1–2★ complaints — never mixed.

example: This kit is outstanding. The battery life is brilliant. Overall, I would recommend it to anyone.

author string

Reviewer's full name.

example: Emily Carter

date string (YYYY-MM-DD)

Review date, uniformly distributed within from..to (inclusive).

example: 2026-03-14

verified boolean

Verified-purchase flag (true for roughly 3 in 4 reviews).

example: true

helpfulCount integer

Helpful votes, 0–500, skewed low like real review pages.

example: 12

Documented examples

Build-generated requests and complete responses
4
Ten reproducible reviews
GET /api/reviews?count=10&seed=42
{
  "data": [
    {
      "rating": 4,
      "title": "The quality exceeded my expectations",
      "body": "I am thoroughly impressed. I would recommend it to anyone. Overall, I absolutely love it.",
      "author": "Kaylie Ziemann",
      "date": "2026-02-17",
      "verified": false,
      "helpfulCount": 371
    },
    {
      "rating": 1,
      "title": "Simply cheap",
      "body": "This product is terrible. It broke within the first week.",
      "author": "Waino Friesen",
      "date": "2026-02-25",
      "verified": true,
      "helpfulCount": 328
    },
    {
      "rating": 5,
      "title": "Simply outstanding",
      "body": "I am thoroughly impressed. Everything about it feels superb.",
      "author": "Mr. Hailee Steuber",
      "date": "2025-08-06",
      "verified": true,
      "helpfulCount": 165
    },
    {
      "rating": 1,
      "title": "Awful kit",
      "body": "The build feels flimsy and cheap. The material is awful. Overall, I had to ask for a refund.",
      "author": "Otis Jacobson",
      "date": "2025-08-28",
      "verified": true,
      "helpfulCount": 281
    },
    {
      "rating": 5,
    …
    "generatedAt": "2026-07-29T08:13:22.000Z"
  }
}
Only 5-star raves
GET /api/reviews?minRating=5&count=5&seed=7
{
  "data": [
    {
      "rating": 5,
      "title": "I would recommend it to anyone",
      "body": "This accessory is superb. I would recommend it to anyone. Overall, it has been flawless in daily use.",
      "author": "Bell Schimmel V",
      "date": "2025-10-21",
      "verified": true,
      "helpfulCount": 485
    },
    {
      "rating": 5,
      "title": "Simply superb",
      "body": "This kit is wonderful. The quality exceeded my expectations. Overall, I absolutely love it.",
      "author": "Mr. Jermaine Torp",
      "date": "2026-06-20",
      "verified": true,
      "helpfulCount": 91
    },
    {
      "rating": 5,
      "title": "Everything about it feels superb",
      "body": "It has been flawless in daily use. The value for money is superb. Overall, I absolutely love it.",
      "author": "Juliana Adams",
      "date": "2026-07-03",
      "verified": false,
      "helpfulCount": 3
    },
    {
      "rating": 5,
      "title": "I absolutely love it",
      "body": "Everything about it feels superb. I would recommend it to anyone. Overall, it has been flawless in daily use.",
      "author": "Ms. Lila Bauch",
      "date": "2026-01-13",
      "verified": true,
      "helpfulCount": 430
    },
    {
      "rating": 5,
    …
    "generatedAt": "2026-07-29T08:13:22.000Z"
  }
}
Critical reviews from Q1 2026
GET /api/reviews?maxRating=2&from=2026-01-01&to=2026-03-31&count=8&seed=3
{
  "data": [
    {
      "rating": 1,
      "title": "Terrible item",
      "body": "This item is flimsy. The build feels flimsy and cheap. Overall, I am deeply disappointed.",
      "author": "Joana Kunde",
      "date": "2026-03-30",
      "verified": true,
      "helpfulCount": 234
    },
    {
      "rating": 2,
      "title": "It is a complete waste of money",
      "body": "This set is terrible. The packaging is poor. Overall, it is a complete waste of money.",
      "author": "Molly Marquardt",
      "date": "2026-02-11",
      "verified": false,
      "helpfulCount": 61
    },
    {
      "rating": 1,
      "title": "Simply useless",
      "body": "This device is horrible. I returned it almost immediately.",
      "author": "Cathy Emmerich",
      "date": "2026-03-02",
      "verified": true,
      "helpfulCount": 3
    },
    {
      "rating": 1,
      "title": "It arrived defective",
      "body": "It is a complete waste of money. The customer service is terrible.",
      "author": "Ms. Deshaun Wolff",
      "date": "2026-03-06",
      "verified": true,
      "helpfulCount": 55
    },
    {
      "rating": 1,
    …
    "generatedAt": "2026-07-29T08:13:22.000Z"
  }
}
Lukewarm 3-star reviews as CSV
GET /api/reviews?minRating=3&maxRating=3&count=20&format=csv
rating,title,body,author,date,verified,helpfulCount
3,The quality is average at best,This tool is middling. It is adequate for everyday use.,Kaylie Ziemann,2026-06-09,false,48
3,Simply adequate,"It does the job, but it is unremarkable. It is fine for casual use. Overall, it is decent for the price.",Waino Friesen,2025-08-28,false,24
3,Simply acceptable,It is decent for the price. The setup is adequate.,Mr. Hailee Steuber,2025-11-02,true,84
3,Okay kit,"This kit is fine. The finish is passable. Overall, it is decent for the price.",Otis Jacobson,2025-12-11,false,0
3,Simply average,"This tool is mediocre. It is adequate for everyday use. Overall, it is a fairly mediocre experience all round.",Melisa Oberbrunner-Funk,2025-11-22,true,31
3,Simply average,"This gadget is mediocre. It is okay overall, with a few quirks. Overall, it is adequate for everyday use.",Kayden Howell,2025-12-19,true,0
3,It is a fairly mediocre experience all round,"This gadget is average. The material is average. Overall, the quality is average at best.",Ms. Lucille Wunsch,2025-07-29,true,197
3,Simply mediocre,"It is decent for the price. The instruction manual is unremarkable. Overall, it is a fairly mediocre experience all round.",Joe Osinski,2025-08-06,true,156
3,It is decent for the price,"The quality is average at best. The customer service is passable. Overall, it is okay overall, with a few quirks.",Dorcas Wilkinson,2025-10-06,true,459
3,Adequate customer service,"This set is unremarkable. The build quality is unremarkable. Overall, it does the job, but it is unremarkable.",Mrs. Rubie Adams,2025-10-27,false,379
3,Unremarkable material,"This product is fine. It is passable, though middling in places. Overall, it is okay overall, with a few quirks.",Abdul O'Hara,2025-08-19,true,48
3,Simply passable,"This accessory is average. It is decent for the price. Overall, it is okay overall, with a few quirks.",Mr. Gus MacGyver,2026-02-14,true,152
3,Simply unremarkable,This accessory is middling. It is fine for casual use.,Diana Hamill,2026-06-10,true,102
3,Simply passable,"It is a fairly mediocre experience all round. It is adequate for everyday use. Overall, the quality is average at best.",Alexanne Lynch III,2025-09-09,true,100
3,Passable set,"It is adequate for everyday use. It is okay overall, with a few quirks.",Karine Moen-Pagac,2026-06-07,false,473
3,Decent device,"It is passable, though middling in places. The quality is average at best. Overall, it is decent for the price.",Sheri Pfannerstill,2025-12-27,true,25
3,Simply middling,"It does the job, but it is unremarkable. The finish is average. Overall, it is okay overall, with a few quirks.",Neal Olson,2025-09-29,true,180
3,Unremarkable setup,"It is passable, though middling in places. It is a fairly mediocre experience all round. Overall, it is fine for casual use.",Ken Runte,2025-12-29,true,188
3,Acceptable product,"It is a fairly mediocre experience all round. It is okay overall, with a few quirks.",Mr. Reagan Howell,2026-03-04,false,179
3,It is a fairly mediocre experience all round,"This kit is unremarkable. The design is fine. Overall, it is fine for casual use.",Susan Steuber,2026-05-29,true,441

About this API

Coverage & behavior

Generates product reviews whose text actually matches the star rating. Every sentiment-bearing word is drawn from one of three disjoint word pools, so a 1★ review can never say love and a 5★ review can never mention a refund:

  • 4–5★ → positive pool (love, excellent, flawless, recommend…)
  • 3★ → lukewarm pool (decent, okay, average, adequate…)
  • 1–2★ → negative pool (disappointed, broke, waste, returned…)

minRating/maxRating clamp the stars; within the allowed range, ratings follow the J-shaped distribution of real review pages (5★ most common, then a bump of 1★). from/to bound the review date and default to the past 365 days — the resolved range is echoed back in meta.params, and from later than to is a 400. verified is true for roughly 3 in 4 reviews and helpfulCount (0–500) is skewed low, like real listings.

Everything is fake but internally consistent, and with a seed the same query returns byte-identical reviews forever.

Use it for

  • Populate storefront and review-widget prototypes with rating-consistent reviews
  • Labeled fixtures for sentiment-analysis demos — the star rating is the label
  • Test moderation and filtering UIs: ?maxRating=2 yields a wall of complaints

Frequently asked questions

Can I control the star range?

minRating/maxRating genuinely bound each rating, so you can test empty-state, all-negative or five-star-only layouts.

Do review dates respect my range?

Yes — from/to constrain the date field exactly; combine with seed for a frozen review history.

Are reviews marked as verified purchases?

Some are — verified is a per-record boolean, plus helpfulCount for sort demos. All of it is generated; no real customers were involved.