SYSTEM all green source tourism.gov.my queue 18,492 pages p99 latency 412ms dataflirt.com · scraper/tourism-gov.my
RUN . 14 active pipelines . tourism.gov.my live

Malaysia travel data,
at warehouse scale.

We extract destination directories, MOTAC-licensed travel agents, registered tour guides, accommodation ratings, and official event calendars from tourism.gov.my. Delivered as clean JSON, CSV, or Parquet to your warehouse.

Destinations extracted
12,841 /run
Licensed agents
4,922 /month
Event records
2,105 /year
Active pipelines
14
Uptime
99.85%
Data Dictionary

Every field we extract from tourism.gov.my

Structured, schema-consistent data across all major object types — delivered clean, typed, and ready to query.

Complete list of extractable fields for Destinations objects from tourism.gov.my. All fields typed and schema-versioned.

destination_idnamestatecategorydescriptionoperating_hoursadmission_feecoordinatesimage_urlsofficial_website
destinations
● 200 OK
"destination_id": "DEST-4921",
"name": "Batu Caves",
"state": "Selangor",
"category": "Cultural Heritage",
"admission_fee": "Free",
"operating_hours": "07:00 - 21:00",
"coordinates": "3.2379, 101.6833",
"official_website": "null"
# destination_idnamestatecategorydescriptionoperating_hours
1
2
3

Complete list of extractable fields for Licensed Agents objects from tourism.gov.my. All fields typed and schema-versioned.

license_nocompany_namestatusregistration_dateexpiry_dateaddressstatecontact_numberemailwebsite
licensed_agents
● 200 OK
"license_no": "KPK/LN 8392",
"company_name": "Borneo Eco Tours Sdn Bhd",
"status": "Active",
"expiry_date": "2026-12-31",
"state": "Sabah",
"contact_number": "+6088438300",
"email": "info@borneoecotours.com",
"website": "borneoecotours.com"
# license_nocompany_namestatusregistration_dateexpiry_dateaddress
1
2
3

Complete list of extractable fields for Tour Guides objects from tourism.gov.my. All fields typed and schema-versioned.

guide_idnamelicense_typelanguages_spokenstatevalidity_periodbadge_colourcontact_info
tour_guides
● 200 OK
"guide_id": "TG-99214",
"name": "Ahmad bin Abdullah",
"license_type": "City Guide",
"languages_spoken": "['English', 'Malay', 'Mandarin']",
"state": "Kuala Lumpur",
"badge_colour": "Blue",
"validity_period": "2025-08-15",
"contact_info": "Available on request"
# guide_idnamelicense_typelanguages_spokenstatevalidity_period
1
2
3

Complete list of extractable fields for Events objects from tourism.gov.my. All fields typed and schema-versioned.

event_idtitlestart_dateend_datelocationstateorganizercontact_emaildescriptionticket_url
events
● 200 OK
"event_id": "EVT-2025-041",
"title": "Rainforest World Music Festival",
"start_date": "2025-06-20",
"end_date": "2025-06-22",
"location": "Sarawak Cultural Village",
"state": "Sarawak",
"organizer": "Sarawak Tourism Board",
"contact_email": "stb@sarawaktourism.com"
# event_idtitlestart_dateend_datelocationstate
1
2
3

Complete list of extractable fields for Accommodations objects from tourism.gov.my. All fields typed and schema-versioned.

motac_idproperty_namestar_ratingcategoryaddressstatetotal_roomsfacilitiescontact_number
accommodations
● 200 OK
"motac_id": "ACC-5821",
"property_name": "Shangri-La Kuala Lumpur",
"star_rating": 5,
"category": "Hotel",
"state": "Kuala Lumpur",
"total_rooms": 662,
"facilities": "['Pool', 'Gym', 'Spa', 'Conference Room']",
"contact_number": "+60320322388"
# motac_idproperty_namestar_ratingcategoryaddressstate
1
2
3

Capabilities

Authoritative Malaysia travel data extraction

Our scraper handles the legacy architecture of official government portals. We extract structured directories, resolve pagination limits, and parse embedded PDF documents.

Destination Extraction

Capture coordinates, operating hours, admission fees, and descriptive metadata for thousands of registered tourist sites.

MOTAC Agent Verification

Extract the complete registry of licensed travel agents, including license numbers, expiry dates, and contact details.

Event Calendar Tracking

Monitor state and national event calendars for festival dates, locations, and official organiser information.

Accommodation Ratings

Scrape official MOTAC star ratings for hotels and resorts, ensuring OTA inventory matches government classifications.

PDF Document Parsing

Extract text and tables from official visa guidelines, travel advisories, and promotional brochures hosted as PDFs.

Geo-Coordinate Mapping

Normalise location data across all states and federal territories into standard latitude and longitude formats.

Multi-Language Support

Extract content available in both Bahasa Malaysia and English, maintaining language associations per record.

Legacy Infrastructure Handling

Custom retry logic and exponential backoff profiles designed specifically for slow-responding government web servers.

Scheduled Diffs

Run monthly or quarterly pipelines to detect newly registered agents, revoked licenses, or updated event schedules.

// engagement pipeline

From government portal to warehouse record

Brief in. Clean data out.

Define Scope
d 0

Select target datasets: destination directories, MOTAC registries, or event calendars. We map the extraction schema.

Pipeline Build
d 2–4

We configure Scrapy crawlers, set up Malaysia-based proxy routing, and build PDF parsing modules.

Validation & QA
d 4–6

Schema validation, null-rate checks, and data normalisation to ensure consistent state and category naming.

Delivery
ongoing

JSON, CSV, or Parquet pushed to your S3 bucket, BigQuery dataset, or Snowflake stage on agreed cadence.

Under the hood

Navigating legacy government web architecture

Scraping tourism.gov.my requires handling slow response times, inconsistent DOM structures, and embedded documents. We manage the infrastructure so you get clean data.

pipeline-monitor · tourism.gov.my · live ● active
// fingerprinting
Identity rotation
TLS fingerprintrandomised
User-agentrotated
IP poolresidential
Challenges blocked0
// pagination
Page coverage
48,291 pages queued running
// observability
Pipeline health
99.9%
uptime
142ms
p99 lat
0.3%
null rate
2
alerts
Network resilience
Handling high latency and timeouts

Government servers often experience high latency or drop connections under minimal load. Our crawlers implement aggressive exponential backoff, deep retry queues, and low-concurrency pacing to ensure complete extraction without triggering firewall blocks.

Document parsing
Extracting data from embedded PDFs

Critical information like visa updates or detailed agent registries are sometimes published only as PDF attachments. We integrate automated PDF parsing into the pipeline, converting unstructured document text into queryable JSON fields.

Geo-routing
Malaysia residential proxies

To avoid geo-blocking and ensure we receive the correct localised content, all requests are routed through Malaysia-based residential IPs. This guarantees consistent access to domestic-facing directories and portals.

Data normalisation
Standardising inconsistent inputs

Legacy CMS platforms often produce inconsistent data entry, such as varying state names or address formats. We apply post-extraction normalisation rules to standardise locations, dates, and contact numbers before delivery.

State management
Tracking license expirations

For agent and guide registries, we maintain historical state. When a license expires or is revoked, our change-detection system flags the status update rather than simply dropping the record.

Applications

Who uses Malaysia tourism data

Teams across industries use tourism.gov.my data to build competitive products and smarter operations.

01
OTA Inventory Enrichment

Online travel agencies cross-reference their hotel listings against official MOTAC star ratings to ensure compliance and accuracy.

02
B2B Agent Verification

Tour operators and airlines verify the license status of local travel agents before establishing commercial partnerships.

03
Travel Market Research

Consultancies analyse destination density and infrastructure development across different Malaysian states.

04
Itinerary Planning AI

Travel tech startups ingest destination coordinates, operating hours, and event calendars to train automated trip planners.

05
Hospitality Investment Analysis

Real estate developers track accommodation clusters and official tourist footfall statistics to identify high-yield investment zones.

06
Event Aggregation

Media outlets and ticketing platforms aggregate official state and national events to populate local discovery feeds.

Why DataFlirt

"Malaysia's official tourism portal holds the authoritative registry of licensed operators and destinations, but extracting it requires navigating legacy government infrastructure."

Government websites present unique scraping challenges: slow response times, inconsistent DOM structures, and heavily nested PDF directories. DataFlirt handles the proxy routing, timeout logic, and document parsing so your team gets clean, normalised destination and licensing data without fighting legacy web architecture.

Technical Spec

Tourism.gov.my scraper technical specifications

Everything supported by our tourism.gov.my scraper — rendered SPA elements, auth walls, rate-limit evasion and beyond.

JavaScript rendering
Playwright sessions for dynamic interactive maps and search forms
Supported
Malaysia proxy routing
Requests routed via MY residential IPs to bypass regional blocks
Supported
PDF text extraction
Automated parsing of linked brochures and guideline documents
Supported
Change detection
Hash-based diffing to track new registrations or expired licenses
Supported
Webhook delivery
HTTP POST per record or batch for downstream integration
Supported
Language mapping
Extraction of parallel EN and MS content where available
Supported
MOTAC Agent Portal Login
Internal submission dashboards and proprietary agent data
Partial
Visa Application Status
Individual immigration tracking requires personal credentials
Partial
Infrastructure

Infrastructure powering the extraction

Open-source tooling on proven cloud infra — no vendor lock-in, full observability.

ScrapyPlaywrightPython 3.12RedisPostgreSQLApache AirflowAWS LambdaS3CloudWatch2CaptchaCapSolverResidential ProxiesDockerKubernetesGrafanaPrometheusPyPDF2
Scrapy + Playwright Stack

Scrapy handles the broad crawl and deep retry logic required for slow servers, while Playwright manages interactive elements and dynamic DOM hydration.

Localised Proxy Infrastructure

We maintain pools of Malaysia-specific residential proxies. This prevents geographic redirects and ensures access to all domestic-facing content.

Cloud-Native Orchestration

Pipelines run on AWS ECS with Airflow managing scheduling and dependency execution. All state and historical license data is stored in managed Postgres.

Output & Delivery

Your data, your destination

Data delivered to where your team already works — no new tooling required.

JSON
Newline-delimited or nested arrays
CSV
Flat file with typed columns
XLS
Excel compatible format for business teams
Parquet
Columnar format for data warehouse ingestion
AWS S3
Direct bucket delivery
Webhook
HTTP POST per record for real-time processing
API
REST endpoints to query historical state
BigQuery
Streamed directly into your dataset
Snowflake
Stage and COPY INTO workflow
Postgres
Upsert into existing schema
S3
Direct bucket delivery — compatible with any data lake
// faq

Common questions.

About tourism.gov.my scraping, legality, and pipeline operations.

Ask us directly →
Is scraping government registry data legal?

Scraping publicly available registries, such as licensed travel agents and destination directories, is generally permissible for factual extraction. DataFlirt targets only public, non-authenticated directories. We do not attempt to bypass login portals or extract personal citizen data. Clients should consult legal counsel regarding their specific commercial use of government data.

How do you handle slow response times from the portal?

We implement low-concurrency pacing, extended timeout thresholds (up to 60 seconds), and exponential backoff retry policies. This ensures we capture the complete dataset without overwhelming the target infrastructure.

Can you extract data from the PDF brochures?

Yes. Our pipeline includes automated document parsing. We download target PDFs, extract the text and embedded tables, and map the output into structured JSON fields alongside the standard web data.

How frequently is the data updated?

Government directories typically update on a weekly or monthly cycle. We recommend scheduling pipelines to run weekly to capture new agent registrations, license expirations, and event calendar additions.

Do you capture historical license changes?

Yes. We maintain a hash index of all previously seen records. If an agent's license status changes from Active to Expired, we emit a diff record detailing the change and the timestamp.

What happens if the website structure changes?

Our selectors use multi-layer fallback chains. If a DOM update breaks the primary extraction path, our alerting stack notifies our engineering team, and we deploy a patch to restore the pipeline.

$ dataflirt scope --new-project --source=tourism.gov.my ready

Tell us what
to extract.
We do the rest.

20-minute scoping call. Pilot dataset within the week. Production within two. Whether you need a full extraction of MOTAC licensed agents or a continuous feed of destination updates, we build and operate the pipeline. Tell us your requirements.

hello@dataflirt.com · Bengaluru · IST · typical reply < 4h
Related Scrapers

More in tourism and travel guides

Services

Data Extraction for Every Industry

View All Services →