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

https://api.coffeespot.id/api

Authentication

Semua request ke API memerlukan API Key yang dikirim melalui header x-api-key.

Request Header
x-api-key: YOUR_API_KEY

Contoh Request

cURL
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

Jika limit terlampaui, API akan mengembalikan status 429 Too Many Requests.

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 }
  ]
}