A public REST API for browsing the Guess How Much? dataset. Read endpoints are open; write endpoints use bearer tokens issued via magic link.
p99 < 120ms across all read endpoints, served from edge.
Stable v1 contract. Breaking changes ship under /v2 only.
Read access requires no key. Generous 600 req/min limit.
https://api.guesshowmuch.app/v1
Public read endpoints are unauthenticated. Write endpoints require a bearer token from the magic-link flow.
curl https://api.guesshowmuch.app/v1/restaurants \ -H "Authorization: Bearer ghm_live_3a9f...e71"
/v1/restaurantsList approved restaurants. Supports city, suburb, price filters.
/v1/restaurants/:idGet a single restaurant with its comments and votes.
/v1/restaurantsSubmit a new listing for moderation. No auth required.
/v1/restaurants/:idUpdate a listing. Owner or moderator only.
/v1/restaurants/:idRemove a listing. Moderator/admin only.
/v1/restaurants/:id/voteCast an upvote or downvote. Stored per-device.
/v1/restaurants/:id/flagFlag for outdated info. Auto-hide at 3 flags.
/v1/hot-dealsActive time-bounded specials with countdown metadata.
/v1/community/postsCommunity feed posts.
/v1/community/postsCreate a post (member+).
/v1/admin/importBulk CSV import. Admin only.
GET /v1/restaurants/r-001
{
"id": "r-001",
"name": "Hungry Tum Tum",
"dish": "Pad See Ew + Thai Tea",
"price": 11.50,
"currency": "AUD",
"suburb": "West End",
"city": "Brisbane",
"location": { "lat": -27.483, "lng": 153.008 },
"votes": { "up": 142, "down": 7 },
"verifiedAt": "2026-04-22T08:30:00Z",
"featured": true,
"tags": ["Thai", "Lunch"]
}restaurant.approvedFires when a moderator approves a submission.
restaurant.flaggedFires when flag count crosses the auto-hide threshold.
hotdeal.expiredFires when a time-limited deal ends.
post.createdFires when a community post is published.