Introduction
CoffeeSpot API menyediakan akses ke data direktori coffee shop di Indonesia. API ini menggunakan REST architecture dan mengembalikan response dalam format JSON.
Base URL
Authentication
Semua request ke API memerlukan API Key yang dikirim melalui header x-api-key.
x-api-key: YOUR_API_KEY
Contoh Request
curl -X GET "https://api.coffeespot.id/api/coffeeshops" \
-H "x-api-key: cs_live_xxxxxxxxxxxx"
Rate Limiting
Setiap API key memiliki limit 100 requests per hari. Limit akan reset setiap tengah malam (00:00 WIB).
Response headers akan menunjukkan status limit Anda:
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1704153600
Rate Limit Exceeded
Error Handling
API menggunakan standard HTTP status codes:
| Status Code | Description |
|---|---|
200 |
Success |
400 |
Bad Request - Parameter tidak valid |
401 |
Unauthorized - API key tidak valid atau tidak ada |
404 |
Not Found - Resource tidak ditemukan |
429 |
Too Many Requests - Rate limit terlampaui |
500 |
Internal Server Error |
Error Response Format
{
"success": false,
"error": {
"code": "UNAUTHORIZED",
"message": "Invalid or missing API key"
}
}
Coffee Shops
GET
/coffeeshops
Mendapatkan daftar coffee shop dengan opsi filter dan pagination.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
city |
string | Filter by city name |
category_id |
integer | Filter by category ID |
facility_id |
integer | Filter by facility ID |
search |
string | Search by name |
page |
integer | Page number (default: 1) |
limit |
integer | Items per page (default: 10, max: 50) |
Response
{
"success": true,
"data": [
{
"id": 1,
"name": "Kopi Kenangan",
"description": "Coffee shop modern dengan suasana nyaman",
"address": "Jl. Sudirman No. 123",
"city": "Jakarta",
"rating": 4.5,
"open_time": "07:00",
"close_time": "23:00",
"category": {
"id": 4,
"name": "Coffee Chain"
},
"facilities": [
{ "id": 1, "name": "WiFi", "icon": "📶" },
{ "id": 2, "name": "AC", "icon": "❄️" }
]
}
],
"pagination": {
"page": 1,
"limit": 10,
"total": 156,
"total_pages": 16
}
}
GET
/coffeeshops/:id
Mendapatkan detail coffee shop berdasarkan ID.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
id * |
integer | Coffee shop ID |
Categories
GET
/categories
Mendapatkan daftar semua kategori coffee shop.
Response
{
"success": true,
"data": [
{ "id": 1, "name": "Specialty Coffee", "description": "..." },
{ "id": 2, "name": "Cafe & Eatery", "description": "..." },
{ "id": 3, "name": "Roastery", "description": "..." },
{ "id": 4, "name": "Coffee Chain", "description": "..." }
]
}
Facilities
GET
/facilities
Mendapatkan daftar semua fasilitas yang tersedia.
Response
{
"success": true,
"data": [
{ "id": 1, "name": "WiFi", "icon": "📶" },
{ "id": 2, "name": "AC", "icon": "❄️" },
{ "id": 3, "name": "Parking", "icon": "🚗" },
{ "id": 4, "name": "Outdoor Seating", "icon": "🌳" },
{ "id": 5, "name": "Power Outlet", "icon": "🔌" },
{ "id": 6, "name": "Non-Smoking Area", "icon": "🚭" },
{ "id": 7, "name": "Live Music", "icon": "🎵" },
{ "id": 8, "name": "Food Menu", "icon": "🍕" },
{ "id": 9, "name": "Meeting Room", "icon": "🏢" },
{ "id": 10, "name": "Pet Friendly", "icon": "🐕" }
]
}
Cities
GET
/cities
Mendapatkan daftar kota yang memiliki coffee shop.
Response
{
"success": true,
"data": [
{ "name": "Jakarta", "count": 45 },
{ "name": "Bandung", "count": 32 },
{ "name": "Surabaya", "count": 28 },
{ "name": "Yogyakarta", "count": 21 }
]
}