keikaavousi/fake-store-api
keikaavousi/fake-store-api has 2,596 GitHub stars and 520 forks. GitHot measured +1 stars in 24 hours. Last checked 2026-11-06 20:58 UTC. Last push 2024-04-12.
FakeStoreAPI is a free online REST API that provides you fake e-commerce JSON data
Measured star growth
- in 24h
- +1
- in 7 days
- Update delayed
- in 15 days
- Update delayed
- in 1 month
- Update delayed
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
OriginalFakeStoreAPI
FakeStoreAPI is a free online REST API that you can use whenever you need Pseudo-real data for your e-commerce or shopping website without running any server-side code. It's awesome for teaching purposes, sample codes, tests and etc.
You can visit in detail docs in FakeStoreAPI for more information.
Why?
When I wanted to design a shopping website prototype and needed fake data, I had to use lorem ipsum data or create a JSON file from the base. I didn't find any online free web service to return semi-real shop data instead of lorem ipsum data. so I decided to create this simple web service with NodeJs(express) and MongoDB as a database.
Resources
There are 4 main resources need in shopping prototypes:
- Products https://fakestoreapi.com/products
- Carts https://fakestoreapi.com/carts
- Users https://fakestoreapi.com/users
- Login Token https://fakestoreapi.com/auth/login
New! "Rating" (includes rate and count) has been added to each product object!
How to
you can fetch data with any kind of methods you know(fetch API, Axios, jquery ajax,...)
Get all products
fetch("https://fakestoreapi.com/products")
.then((res) => res.json())
.then((json) => console.log(json));
Get a single product
fetch("https://fakestoreapi.com/products/1")
.then((res) => res.json())
.then((json) => console.log(json));
Add new product
fetch("https://fakestoreapi.com/products", {
method: "POST",
body: JSON.stringify({
title: "test product",
price: 13.5,
description: "lorem ipsum set",
image: "https://i.pravatar.cc",
category: "electronic",
}),
})
.then((res) => res.json())
.then((json) => console.log(json));
/* will return
{
id:31,
title:'...',
price:'...',
category:'...',
description:'...',
image:'...'
}
*/
Note: Posted data will not really insert into the database and just return a fake id.
Updating a product
fetch("https://fakestoreapi.com/products/7", {
method: "PUT",
body: JSON.stringify({
title: "test product",
price: 13.5,
description: "lorem ipsum set",
image: "https://i.pravatar.cc",
category: "electronic",
}),
})
.then((res) => res.json())
.then((json) => console.log(json));
/* will return
{
id:7,
title: 'test product',
price: 13.5,
description: 'lorem ipsum set',
image: 'https://i.pravatar.cc',
category: 'electronic'
}
*/
fetch("https://fakestoreapi.com/products/8", {
method: "PATCH",
body: JSON.stringify({
title: "test product",
price: 13.5,
description: "lorem ipsum set",
image: "https://i.pravatar.cc",
category: "electronic",
}),
})
.then((res) => res.json())
.then((json) => console.log(json));
/* will return
{
id:8,
title: 'test product',
price: 13.5,
description: 'lorem ipsum set',
image: 'https://i.pravatar.cc',
category: 'electronic'
}
*/
Note: Edited data will not really be updated into the database.
Deleting a product
fetch("https://fakestoreapi.com/products/8", {
method: "DELETE",
});
Nothing will delete on the database.
Sort and Limit
You can use query string to limit results or sort by asc|desc
// Will return all the posts that belong to the first user
fetch("https://fakestoreapi.com/products?limit=3&sort=desc")
.then((res) => res.json())
.then((json) => console.log(json));
All available routes
Products
fields:
{
id:Number,
title:String,
price:Number,
category:String,
description:String,
image:String
}
GET:
- /products (get all products)
- /products/1 (get specific product based on id)
- /products?limit=5 (limit return results )
- /products?sort=desc (asc|desc get products in ascending or descending orders (default to asc))
- /products/products/categories (get all categories)
- /products/category/jewelery (get all products in specific category)
- /products/category/jewelery?sort=desc (asc|desc get products in ascending or descending orders (default to asc))
POST:
- /products
-PUT,PATCH
- /products/1
-DELETE
- /products/1
Carts
fields:
{
id:Number,
userId:Number,
date:Date,
products:[{productId:Number,quantity:Number}]
}
GET:
- /carts (get all carts)
- /carts/1 (get specific cart based on id)
- /carts?startdate=2020-10-03&enddate=2020-12-12 (get carts in date range)
- /carts/user/1 (get a user cart)
- /carts/user/1?startdate=2020-10-03&enddate=2020-12-12 (get user carts in date range)
- /carts?limit=5 (limit return results )
- /carts?sort=desc (asc|desc get carts in ascending or descending orders (default to asc))
POST:
- /carts
PUT,PATCH:
- /carts/1
DELETE:
- /carts/1
Users
fields:
{
id:20,
email:String,
username:String,
password:String,
name:{
firstname:String,
lastname:String
},
address:{
city:String,
street:String,
number:Number,
zipcode:String,
geolocation:{
lat:String,
long:String
}
},
phone:String
}
GET:
- /users (get all users)
- /users/1 (get specific user based on id)
- /users?limit=5 (limit return results )
- /users?sort=desc (asc|desc get users in ascending or descending orders (default to asc))
POST:
- /users
PUT,PATCH:
- /users/1
DELETE:
- /users/1
Auth
fields:
{
username:String,
password:String
}
POST:
- /auth/login
ToDo
- Add graphql support
- Add pagination
- Add another language support
Explore related projects
codecrafters-io/build-your-own-x
Master programming by recreating your favorite technologies from scratch.
560,634 starspublic-apis/public-apis
A collective list of free APIs
496,888 starsmorluto/rea
Reverse engineer anything with agents, from app behavior down to native binaries.
439,662 starsopenclaw/openclaw
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
394,107 stars