Halal Eats

Restaurant endpoints

Search restaurants, find nearby places, fetch details, list categories, and read public stats.

Restaurant discovery is the core Halal Eats API surface.

List restaurants

GET /api/v1/stores

Query params:

ParamTypeNotes
pagenumberDefaults to 1
limitnumberDefaults to 20, capped at 100
searchstringName, cuisine, city, address, or notes
halal_statusstringverified_halal, halal_options, unknown
cuisinestringCuisine/category filter
northnumberOptional map bounds
southnumberOptional map bounds
eastnumberOptional map bounds
westnumberOptional map bounds

Example:

curl "https://eatinghalal.vercel.app/api/v1/stores?search=Turkish&halal_status=verified_halal&limit=10"

SDK:

const response = await client.stores.list({
  search: "Turkish",
  halalStatus: "verified_halal",
  limit: 10,
});
GET /api/v1/stores/nearby

Query params:

ParamTypeNotes
latnumberRequired, between -90 and 90
lngnumberRequired, between -180 and 180
radiusnumberDefaults to 5000 meters, capped at 50000
limitnumberDefaults to 20, capped at 100

Results are sorted by distance and include distanceMeters.

Example:

curl "https://eatinghalal.vercel.app/api/v1/stores/nearby?lat=-33.8688&lng=151.2093&radius=5000"

SDK:

const response = await client.stores.nearby({
  lat: -33.8688,
  lng: 151.2093,
  radius: 5000,
});

Get one restaurant

GET /api/v1/stores/:id

Example:

curl "https://eatinghalal.vercel.app/api/v1/stores/STORE_ID"

SDK:

const response = await client.stores.get("STORE_ID");

Categories

GET /api/v1/categories

Returns the distinct public cuisine/category list.

SDK:

const response = await client.categories.list();

Public stats

GET /api/v1/stats

Returns public counts such as approved stores and cuisine count.

SDK:

const response = await client.stats.get();

Public store shape

type PublicStore = {
  id: string;
  name: string;
  description: string | null;
  category: string | null;
  cuisine: string | null;
  address: string;
  city: string | null;
  state: string | null;
  country: string | null;
  phone: string | null;
  website: string | null;
  coverImageUrl: string | null;
  halalStatus: "verified_halal" | "halal_options" | "unknown";
  halalStatusLabel: "Fully halal" | "Halal options" | "Unknown";
  halalVerificationMethod: string | null;
  halalVerificationDetails: string | null;
  latitude: number | null;
  longitude: number | null;
  rating: number;
  reviewCount: number;
  hours: string;
  menuItems: PublicMenuItem[];
  reviewHighlights: PublicReviewHighlight[];
  images: PublicImage[];
  distanceMeters?: number;
};

Data notes

  • Coordinates are null when unknown.
  • not_halal listings are excluded from public discovery.
  • Pending or rejected community content is not returned.
  • Public review highlights do not expose user account IDs.

On this page