Open Penang Food Dataset
Penang's hawker centres, stall-level maps, kopitiams, and halal eateries as clean, free, GPS-tagged open data. JSON + CSV, CC-BY 4.0 — build on it, just credit VisitPenang.
What is the Open Penang Food Dataset?
A free, CC-BY 4.0 open dataset of Penang's food scene: 41 eateries, 51 individual hawker-centre stalls across 4 centres, 28 halal eateries, and 15 prayer facilities. Downloadable as JSON and CSV, GPS-tagged where known, images excluded. Halal labels are editorial, not official JAKIM certification.
Download the dataset
One file with all three tables, plus full metadata, the license notice, and the halal caveat. Or grab individual tables below.
Download all tables (JSON)Tables
Eateries
41 rowsHawker centres, street food, restaurants, cafes, and kopitiams — one row per venue.
Hawker Stalls
51 rowsIndividual stalls inside the 4 mapped hawker centres — the rarest part of the dataset.
License — CC-BY 4.0
The structured data (the tables) is licensed CC-BY 4.0 by VisitPenang.com. You may copy, modify, and use it commercially, provided you give appropriate credit and indicate if changes were made.
No images included
This dataset (the structured data) contains no images. Photography on visitpenang.com is separately licensed (Wikimedia Commons, with each image carrying its own attribution terms) and is not part of this dataset's CC-BY license.
Honesty note on halal classifications
Halal / Muslim-friendly classifications in this dataset (the halal_basis and muslim_friendly_note fields) are VisitPenang's editorial assessment, not official certification. A value of jakim-claimed means we classify the venue as JAKIM-certified editorially — it does not mean we verified it in the official register.
The dataset publishes no JAKIM certificate numbers. Malaysia's halal certification is a legally protected mark conferred only by JAKIM and the state authorities. For authoritative halal status, verify each premise yourself:
Official JAKIM MyeHALAL registerData dictionary
Every published column. Coordinates are WGS84 decimal degrees. In CSV exports, array fields (specialties, dietary_tags, cuisine_type) are serialised as ;-delimited strings, and empty cells mean no data (never invented). CSVs are UTF-8 with a BOM so they open cleanly in Excel.
eateries
| Field | Type | Description |
|---|---|---|
id | string | Stable slug (e.g. gurney-drive-hawker-centre). |
name | string | Venue name. |
type | enum | hawker-center | street-food | restaurant | cafe | kopitiam |
area | string | Neighbourhood (George Town, Gurney Drive, Air Itam, …). |
address | string | null | Full street address, where held. |
latitude | number | null | GPS latitude (WGS84 decimal degrees). null where unknown — kopitiams carry no coordinates. |
longitude | number | null | GPS longitude (WGS84 decimal degrees). null where unknown. |
price_tier | enum | null | $ | $$ | $$$ | $$$$ |
hours | string | null | Opening hours, free text as published. |
closed_day | string | null | Regular closure day, if any. |
specialties | string[] | Signature dishes. CSV: ;-delimited. |
signature_dish | string | null | The one dish to order. |
dietary_tags | string[] | pork-free | vegetarian | halal | … (as published). CSV: ;-delimited. |
muslim_friendly_note | enum | null | jakim-claimed | state-claimed | muslim-owned | non-halal | null — VP EDITORIAL classification, NOT a JAKIM verification. |
review_score | number | null | Aggregate rating as held by VP. |
review_count | number | null | Rating count as held by VP. |
source_url | string | The VisitPenang page for this venue. |
hawker_stalls
| Field | Type | Description |
|---|---|---|
stall_id | string | Stall id (e.g. gd-ckt). |
centre_id | string | Foreign key → eateries.id of the parent hawker centre. |
centre_name | string | Parent hawker-centre name. |
name | string | Stall name (some are descriptive, not registered business names). |
sells | string | What the stall sells. |
famous_dish | string | The dish to order. |
price | string | Price range, free text (RM). |
hours | string | Stall hours. |
cuisine_type | enum | noodles | rice | seafood | grilled | snacks | desserts | drinks |
must_visit | boolean | VP must-visit flag. |
source_url | string | The VisitPenang hawker-map page (anchored to the centre). |
muslim_friendly
| Field | Type | Description |
|---|---|---|
id | string | Stable slug. |
name | string | Name. |
kind | enum | eatery | prayer-facility |
area | string | Neighbourhood. |
address | string | null | Address, where held. |
latitude | number | null | GPS latitude (WGS84). null for chains (no single point) and where unknown. |
longitude | number | null | GPS longitude (WGS84). null for chains and where unknown. |
cuisine_type | string[] | Cuisine (eateries only). CSV: ;-delimited. |
halal_basis | enum | null | jakim-claimed | state-claimed | muslim-owned — BASIS of the claim (editorial), NEVER asserted as JAKIM-verified. null for prayer facilities. |
prayer_facility_type | enum | null | mosque | surau | mall-surau | hotel-prayer-room (facilities only). |
is_chain | boolean | True for multi-outlet chains (no single GPS point). |
source_url | string | The VisitPenang halal-food page. |
How to cite
A link back to the canonical page is the simplest way to satisfy CC-BY attribution. For a formal citation, use:
VisitPenang.com — Open Penang Hawker / Halal Dataset (v1.0.0, 2026-06-12), CC-BY 4.0, https://www.visitpenang.com/dataIn an app or README, a line like Data source: VisitPenang.com (CC-BY 4.0) linking this page is enough.
What's in it (and what isn't)
The dataset re-packages data VisitPenang already curates and renders across the live site into a clean, citable form. It covers GPS-tagged eateries across George Town, Gurney Drive, Air Itam, Batu Ferringhi, Tanjung Bungah, Jelutong, Bayan Lepas, Pulau Tikus, and more; stall-level breakdowns of 4 hawker centres; iconic anchor venues (Line Clear since the 1940s, Hameediyah since 1907, Penang Road Teochew Chendul since the 1930s); and a Muslim-friendly layer with 15 prayer facilities.
Venues that appear across multiple source guides (Line Clear, Hameediyah, Deen Maju, Nasi Kandar Beratur and others) are deduplicated to one canonical row. Hawker-centre facility markers (seating, toilets, wash stations, entrances) are filtered out of the stalls table. Multi-outlet chains are flagged and carry no single coordinate. Editorial / seasonal data (Ramadan bazaars, iftar venues, halal-density scores) is out of scope for this stable dataset and lives on the editorial pages instead.
Where this data comes from
Hawker Centre Floor Plans
The interactive stall maps behind the hawker_stalls table.
Halal Food Guide
The editorial guide behind the muslim_friendly table.
Penang Hawker Price Index
Our dated price observations for iconic dishes — also a free dataset.
Full Food Directory
Browse every Penang eatery, hawker centre, and kopitiam on the site.
Dataset FAQs
Can I use this dataset commercially?
Yes. The structured data is licensed under Creative Commons Attribution 4.0 (CC-BY 4.0), which permits copying, modification, and commercial use — on the single condition that you give appropriate credit and indicate if changes were made. For a web project, a visible link back to visitpenang.com satisfies the attribution requirement.
Is the halal data official JAKIM certification?
No. The halal_basis field (jakim-claimed, state-claimed, muslim-owned) records the BASIS of the claim as VisitPenang's editorial assessment — it is not a verification against the official JAKIM register. The dataset publishes no JAKIM certificate numbers. To confirm a venue's official halal status, check it yourself at the MyeHALAL portal (myehalal.halal.gov.my).
Are images included in the dataset?
No. This dataset is structured text only and contains zero image URLs. Photography on visitpenang.com is sourced from Wikimedia Commons under separate per-image licenses (CC-BY, CC-BY-SA, CC0, public domain), which are incompatible with a single dataset license. Bundling those images under the dataset's CC-BY would misrepresent their terms, so they are excluded.
How accurate are the GPS coordinates?
Coordinates are decimal degrees (WGS84) for the venue location as held by VisitPenang. Where a venue has no coordinate in our data — for example most kopitiams, or multi-outlet chains that have no single point — latitude and longitude are null rather than invented. Always sanity-check coordinates before using them in a navigation context.
What makes the hawker-stalls table unusual?
The hawker_stalls table breaks the 4 mapped hawker centres down to individual stalls, with the dish to order, price band, hours, and cuisine type for each. There is no comparable free, structured stall-level dataset for Penang hawker centres in the wild — this is the most distinctive and hardest-to-replicate part of the bundle.
How should I cite this dataset?
Cite it as: VisitPenang.com — Open Penang Hawker / Halal Dataset (v1.0.0, 2026-06-12), CC-BY 4.0, https://www.visitpenang.com/data. Linking the canonical page (visitpenang.com/data) is the simplest way to meet the CC-BY attribution requirement.