Singapore Pharmacy Locations Scraper
hipersoft/singapore-pharmacy-locations-scraper
Export all registered retail pharmacies in Singapore (~249 outlets): pharmacy name, brand (Watsons, Guardian, Unity), outlet, full address and lat/lng. Filter by name, brand, postal code or radius. Public open data, no setup.
Total users
1Monthly users
1Total runs
96Per pharmacy scraped
$0.003Last rebuilt
Oct 26, 2026Overview
Export every registered retail pharmacy in Singapore — around 249 outlets — into clean JSON, CSV or Excel. Each record has pharmacy name, brand, outlet, full address and latitude/longitude. Powered by Singapore's open data (data.gov.sg).
Perfect for retail location intelligence, store-finder apps, FMCG & pharma distribution planning, competitor mapping and site selection.

What you get, per outlet
- 💊 Pharmacy — full registered name
- 🏷️ Brand — detected chain (
Watsons,Guardian,Unity,iCare) or independent - 🏬 Outlet — mall / location label where available
- 📍 Address — structured (block, level, unit, road, building, postal) + formatted, plus latitude & longitude
Filters
query— name or address containsbrand—Watsons,Guardian,Unity,iCarepostalCode— postal code starts-with (district)centerLat/centerLng/radiusKm— radius search: only outlets within N km of a point, sorted nearest-first (addsdistanceKm)maxItems— cap the export (~249 total)
Example input
{ "brand": "Guardian", "maxItems": 100 }
Output

{
"name": "Watson's Personal Care Stores Pte Ltd (Bugis Junction)",
"brand": "Watsons",
"outlet": "Bugis Junction",
"formattedAddress": "200 VICTORIA STREET, #02-29 TO 33/33A, Singapore 188021",
"latitude": 1.2991128709669995,
"longitude": 103.85541118258217,
"sourceUrl": "https://data.gov.sg/collections/139/view",
"collectedAt": "2026-07-30T12:00:00.000Z"
}
Output schema
| Field | Type | Description |
|---|---|---|
id |
string | Stable record ID for the outlet. |
name |
string | Full registered pharmacy name. |
brand |
string | Detected chain brand (Watsons, Guardian, Unity, iCare) or independent. |
outlet |
string | Mall or location label, where available. |
address |
object | Structured address (block, level, unit, road, building, postal). |
formattedAddress |
string | Full single-line address. |
latitude |
number | Latitude coordinate. |
longitude |
number | Longitude coordinate. |
sourceUrl |
string (URL) | Source dataset URL. |
collectedAt |
string (ISO date) | When the record was collected. |
Pricing
Pay-per-event: a small charge per run plus a small amount per outlet returned — you only pay for what you get. See the Pricing tab for current rates.
FAQ
Where does the data come from? Singapore's official retail-pharmacy open dataset on data.gov.sg, reused under the Singapore Open Data Licence.
Can I find pharmacies near a location?
Yes. Set centerLat, centerLng and radiusKm for a radius search — results come back sorted nearest-first with a distanceKm field added.
Can I filter by chain?
Yes. Use brand (Watsons, Guardian, Unity, iCare), postalCode for a district, or query for a name/address match.
What's the output format? Structured JSON — one record per outlet with name, brand, outlet label, structured and formatted address and latitude/longitude. Export as JSON, CSV or Excel.
Can I connect this to other apps? The Singapore Pharmacy Locations Scraper can be connected with almost any cloud service or web app thanks to integrations on the Apify platform. It works with Make, Zapier, Slack, Airbyte, GitHub, Google Drive and many more, plus the Apify API, JavaScript/Python clients and MCP. Or use webhooks to trigger an action whenever a run finishes.
Notes
Data is published under the Singapore Open Data Licence (commercial reuse permitted). Use responsibly and in line with the licence terms.
Input
| Field | Type | Description |
|---|---|---|
querySearch (name or address) | string | Match pharmacies whose name or address contains this text. Leave empty for all. |
brandBrand | string | Filter by chain: Watsons, Guardian, Unity, iCare. Leave empty for all. |
postalCodePostal code starts with | string | Match pharmacies whose postal code starts with this (e.g. 18 for the 18xxxx district). |
centerLatCenter latitude | string | For radius search: latitude of the search center. |
centerLngCenter longitude | string | For radius search: longitude of the search center. |
radiusKmRadius (km) | string | For radius search: only pharmacies within this many km of the center (sorted nearest-first). |
maxItemsMax pharmacies | integer | Maximum pharmacies to return. ~249 in total. Default: 5000 |
API
curl -X POST "https://api.apify.com/v2/acts/hipersoft~singapore-pharmacy-locations-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"query": "",
"brand": "",
"postalCode": "",
"centerLat": "",
"centerLng": "",
"radiusKm": ""
}'from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("hipersoft/singapore-pharmacy-locations-scraper").call(run_input={
"query": "",
"brand": "",
"postalCode": "",
"centerLat": "",
"centerLng": "",
"radiusKm": ""
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('hipersoft/singapore-pharmacy-locations-scraper').call({
"query": "",
"brand": "",
"postalCode": "",
"centerLat": "",
"centerLng": "",
"radiusKm": ""
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);Pricing
| Event | Price | Paid plans from |
|---|---|---|
| Pharmacy scraped One pharmacy location record scraped. | $0.003 | $0.0015 |
| API request One pharmacy dataset download. | $0.001 | $0.001 |
You pay only for what the run returns. Set a maximum cost per run and it stops cleanly at that limit.
Related scrapers
Dribbble Shots Scraper
Scrape public design shots from Dribbble: title, high-res image, tags, likes, views and designer credit. Filter by category or sort, export JSON, CSV or Excel.
359 runs · 5 users · $0.003 / shot scrapedComputrabajo Scraper
Scrape Computrabajo job listings across Latin America (Mexico, Colombia, Argentina, Chile, Peru and more): title, company, location, salary, posted date and apply URL. Filter by country and keyword. No setup.
206 runs · 4 users · $0.002 / listing scrapedKraken Market Data Scraper
Fetch Kraken spot market data in bulk: ticker stats (ask, bid, last, 24h high/low/volume/vwap), OHLC candles for any interval, order book depth (top bids/asks), and tradable pair metadata. Fast, clean and cheap.
165 runs · 4 users · $0.001 / pair scrapedBayt Scraper
Scrape Bayt.com job listings across the Middle East (UAE, Saudi Arabia, Egypt, Qatar and more): title, company, location, posted date and apply URL. Filter by country and keyword.
134 runs · 4 users · $0.003 / job scrapedGitHub Scraper
Search GitHub and scrape repositories (stars, forks, language, topics, license, dates) or user profiles (name, company, location, bio, followers, public email, repos). Uses the GitHub REST API; optional token for higher rate limits. For developer lead generation, OSS research and recruiting.
131 runs · 7 users · $0.0008 / item scrapedHacker News Scraper
Scrape Hacker News stories, comments, Ask HN, Show HN, jobs and polls by keyword, points, comments and date range. Sort by relevance or newest. Title, URL, author, points, comment count, text and HN link. Fast clean HTTP via the HN Algolia API, no setup.
130 runs · 2 users · $0.004 / item scrapedSend the site and the fields. We build it and you get it first.