MessNoMore Data Tools › Track Mobile Plan Prices in Malaysia, Singapore & Australia
How do you compare and track SIM-only and prepaid plan prices in Malaysia, Singapore and Australia?
The official source for mobile plan prices is each carrier's own plan page, so comparing plans means opening every carrier's site and converting each price to the same billing period yourself. Mobile Plans Tracker, an Apify Actor, reads those public pages for 12 carriers in Malaysia, Singapore and Australia once a week and returns one table with every plan priced per month and in US dollars, plus what changed since your last run.
Where do mobile plan prices officially come from?
From the carriers. These are the public plan pages the Actor reads:
- Malaysia: Tune Talk prepaid plans, redONE postpaid and prepaid plans, and U Mobile prepaid data plans.
- Singapore: SIMBA SIM-only and prepaid plans, Circles.Life plans and Zero1 plans.
- Australia: amaysim, Coles Mobile, Telstra SIM-only and prepaid, Vodafone SIM-only and prepaid, Felix Mobile and Lebara 28-day and 365-day plans.
If you are choosing one plan for yourself, these pages and a calculator are enough. Read the carrier's own terms for any promotion before you sign up.
Why is comparing mobile plans by hand slow?
- Billing cycles differ. In the data read on 14 October 2026, Australian plans renew every 7, 28, 30, 184 or 365 days, monthly, every 6 or 12 months, or yearly, and Malaysian plans run from 1 day to 12 months. A plan that renews every 28 days is charged about 13 times a year, not 12.
- Sale prices hide the ongoing price. 21 of the 56 Australian plans showed an introductory or sale price, for example Telstra's $54 prepaid plan shown as "Now $15 until 2 November". In Singapore 3 of 29 plans did (Circles.Life first-month prices), in Malaysia none.
- Bonus data hides the ongoing allowance. The same Telstra plan includes 35 GB per recharge, or 75 GB with its current bonus.
- Offers expire. Several promotions name an end date a few weeks out, so a comparison table made by hand needs redoing every week.
How do you compare plans with different billing cycles?
Convert every price to one month of 30.44 days: divide the price by the length of the cycle in days and multiply by 30.44. The Actor stores the result in priceMonthly and converts it to US dollars in priceMonthlyUsd. It always uses the ongoing price, never the first-month deal. Rows from the same run:
| Carrier | Plan | Price | Cycle | Per month | USD per month | Data per cycle |
|---|---|---|---|---|---|---|
| Telstra (AU) | $54 Pre-Paid Mobile Plan | AUD 54 | 28 days | AUD 58.70 | 40.96 | 35 GB |
| amaysim (AU) | 30GB Data Plan | AUD 25 | 28 days | AUD 27.18 | 18.97 | 30 GB |
| Lebara (AU) | $200 SIM Plan | AUD 200 | 365 days | AUD 16.68 | 11.64 | 180 GB |
| Felix Mobile (AU) | 25GB | AUD 30 | 1 month | AUD 30.00 | 20.93 | 25 GB |
| Circles.Life (SG) | Circles Plus | SGD 18 | 1 month | SGD 18.00 | 14.06 | 300 GB |
| Tune Talk (MY) | Epik 25+ | MYR 275 | 12 months | MYR 22.92 | 5.61 | 480 GB |
The cross-country USD comparison returns this view for all 122 plans in the data.
How do you get mobile plans as JSON?
Choose countries (MY, SG, AU) or specific carriers, the planTypes you want (postpaid, prepaid, sim_only), and cap the output with maxPlans. Each row has the plan name and type, price and billingCycle, promoPrice, priceMonthly and priceMonthlyUsd, dataGB and promoDataGB, 5G, unlimited calls, contract length, short roaming and promotion summaries, the source page and a stable planKey. An AI model lists the plans on each page, and every plan is checked against the page text (price with its currency sign, data amount and plan name); plans that fail the check are dropped. One row from the run above:
[
{
"country": "AU",
"carrierId": "au-telstra",
"carrier": "Telstra",
"source": "preset",
"carrierStatus": "ok",
"planName": "$54 Pre-Paid Mobile Plan",
"planKey": "au-telstra:prepaid:54-pre-paid-mobile-plan:28d",
"type": "prepaid",
"price": 54,
"promoPrice": 15,
"billingCycle": "28 days",
"priceMonthly": 58.7,
"priceMonthlyUsd": 40.96,
"currency": "AUD",
"dataGB": 35,
"promoDataGB": 75,
"dataUnlimited": false,
"unlimitedCalls": true,
"fiveG": null,
"contractMonths": 0,
"roaming": "Capped international call minutes per zone + 100 texts",
"promo": "Sale — Now $15 until 2 November. Physical SIM only; future recharges full price",
"change": "unchanged",
"sourceUrl": "https://www.telstra.com.au/mobile-phones/prepaid-mobiles/offers-and-rates",
"scrapedAt": "2026-10-14T10:51:03.442Z"
}
]
curl -X POST "https://api.apify.com/v2/acts/messnomore~mobile-plans-tracker/run-sync-get-dataset-items" \
-H "Authorization: Bearer YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"countries": ["SG"], "planTypes": ["sim_only"], "compareWithPrevious": true}'
How do you track mobile plan price changes every week?
Keep compareWithPrevious on. Each row is labelled price_down, price_up, new, removed, data_up, data_down, promo_changed or unchanged, with the previous price and data next to the new ones. Your run saves what it delivered in a key-value store in your own Apify account, and the next run compares with it; a first run compares with the previous weekly check. Turn on onlyChanged and schedule the Actor weekly to get only what moved. Carriers without changes are not charged, so a quiet week costs the $0.00005 start fee.
How much does it cost?
- $0.005 per plan in the output.
- $0.05 per carrier with at least one plan in the output.
- A start fee of $0.00005 per run and no charge for compute time.
With the plan counts of 14 October 2026: all Malaysian plans (3 carriers, 37 plans) cost about $0.34, Singapore SIM-only plans (3 carriers, 23 plans) about $0.27, Australian prepaid plans (5 carriers, 45 plans) about $0.48, Australian SIM-only plans (3 carriers, 11 plans) about $0.21, and all 12 carriers (122 plans) about $1.21. Apify Bronze, Silver and Gold subscribers get lower prices. maxPlans and the maximum cost per run cap your spend.
Which carriers are covered, and what is missing?
- 12 carriers, about 120 plans: Tune Talk, redONE and U Mobile in Malaysia; SIMBA, Circles.Life and Zero1 in Singapore; amaysim, Coles Mobile, Telstra, Vodafone, Felix Mobile and Lebara in Australia.
- Partial coverage: U Mobile shows postpaid prices only after clicks, so only its prepaid data plans are included.
- Why not more: each carrier was added only after checking that its robots.txt allows the plan pages and its terms don't forbid automated reading. Carriers that forbid it are not included and are refused as custom URLs.
- Your own carriers: up to 10 custom plan page URLs per run (3 on the Apify free plan), read live during your run.
- Weekly, not real time: check
scrapedAt, and read the carrier's terms before relying on a promotion; conditions such as port-in only or new customers only are summarized inpromo. - Renamed plans appear as one removed and one new plan.
FAQ
Is there an API for mobile plan prices in Malaysia, Singapore or Australia?
For 12 carriers, yes. Mobile Plans Tracker on Apify returns the postpaid, prepaid and SIM-only plans of Tune Talk, redONE, U Mobile, SIMBA, Circles.Life, Zero1, amaysim, Coles Mobile, Telstra, Vodafone, Felix Mobile and Lebara as JSON, CSV or Excel, read from the carriers' own plan pages once a week.
How do I compare a 28-day plan with a monthly plan?
Convert both to the same period. Multiply the 28-day price by 30.44 and divide by 28: a $54 plan that renews every 28 days costs about $58.70 per month, because it renews about 13 times a year. The Actor does this for every plan in the priceMonthly field.
How often do mobile plan prices change?
Often enough that a hand-made table goes stale: several introductory offers in the data carry an end date only a few weeks away. The Actor checks the preset carriers once a week, and scrapedAt shows when each plan's page was last read.
What is the difference between price and promoPrice?
price is what the plan costs after any sale or introductory offer ends, and priceMonthly is based on it. promoPrice is the lower price the carrier shows now, such as a first-recharge or first-month deal, or null when there is none.
Can I track a carrier that is not on the list?
Yes, as a custom URL: up to 10 public plan pages per run (3 on the Apify free plan), up to 3 pages per site. The pages must show their plans without JavaScript, and sites whose terms forbid automated reading are refused.
Is it legal to collect mobile plan prices?
The Actor reads only public plan pages that carriers publish for customers, respects robots.txt and each site's terms, identifies itself with an honest User-Agent and reads the preset carriers once a week. Plan prices are product information, not personal data.