Motorist.sg Scraper - Singapore Used Cars & Dealer Leads avatar

Motorist.sg Scraper - Singapore Used Cars & Dealer Leads

Pricing

from $4.00 / 1,000 used car listing scrapeds

Go to Apify Store
Motorist.sg Scraper - Singapore Used Cars & Dealer Leads

Motorist.sg Scraper - Singapore Used Cars & Dealer Leads

Scrape used-car listings from Motorist.sg — price, depreciation, COE, OMV, ARF, mileage, reg date, full specs and photos, plus dealer/seller name, phone & WhatsApp for lead generation. Filter, monitor price drops. No login or API key.

Pricing

from $4.00 / 1,000 used car listing scrapeds

Rating

0.0

(0)

Developer

Scrape Sage

Scrape Sage

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

1

Monthly active users

4 days ago

Last modified

Share

Motorist.sg Scraper — Singapore Used Cars & Dealer Leads

Extract complete used-car data from Motorist.sg — one of Singapore's fastest-growing car marketplaces and transaction platforms. Get every field that matters: price, yearly depreciation, monthly installment, COE left, registration date, mileage, number of owners, OMV, ARF, road tax, engine capacity, power, transmission, fuel type and the full photo gallery — plus, for lead generation, the dealer/seller's name, mobile number and WhatsApp link on every car.

No login, no cookies, no API key — fast extraction straight from Motorist's structured listing pages, with monitor mode to capture only new cars and price drops on a schedule.

Why this Motorist.sg scraper?

Most car scrapers grab the listing card and stop — a price and a photo, no contact and no cost-of-ownership numbers. This actor reads each Motorist listing in full and ships the richest Motorist.sg dataset in the category: every dealer turned into a contactable lead, plus the COE / OMV / ARF / depreciation figures Singapore buyers actually decide on.

DataTypical car scrapersThis actor
Price + monthly installment
Yearly depreciation
COE left (years + months) + registration datepartial
Mileage + number of ownerspartial
OMV, ARF, road tax
Engine capacity, power (kW + bhp), transmission, fuel type
Dealer / seller name + mobile + WhatsApp✅ on every car (detail mode)
Full photo gallery (all images, full-size)❌ first photo
Cars and commercial vehicles, by body type or makepartial
Monitor mode — new cars + price drops
No start fee

Use cases

  • Car dealer & seller lead generation — every detail page carries the dealer/seller's name, mobile number and WhatsApp link. Filter by make, price band or body type and build targeted outreach lists of Singapore car dealers.
  • Pricing & depreciation intelligence — track asking prices, yearly depreciation, COE left and OMV/ARF across makes and body types; spot under- and over-priced units and segment trends.
  • Cost-of-ownership & valuation screening — compare depreciation, OMV, ARF, road tax and COE remaining to shortlist value buys; filter by mileage, owners and price.
  • New-listing & price-drop monitoring — watch a make, body type or the whole market for new cars and price reductions with monitor mode.
  • Marketplaces & dashboards — power a Singapore used-car feed or BI dashboard from scheduled runs.

How to use

  1. Sign up for Apify — the free plan is enough to try this actor.
  2. Open the Motorist.sg Scraper, pick the segments (body type or make) — or paste Motorist category URLs — set any filters, and click Start.
  3. Watch results stream into the dataset table — one clean row per car.
  4. Export as JSON, CSV, Excel, XML, or RSS — or pull results programmatically via the Apify API.

Input

{
"segments": ["all-vehicles"],
"includeDetails": true,
"makes": ["Toyota", "BMW"],
"minPrice": 50000,
"maxPrice": 150000,
"maxMileageKm": 80000,
"minCoeMonthsLeft": 60,
"maxResults": 200,
"monitorMode": false
}
  • segments — body types (all-vehicles, sedan, suv, hatchback, mpv, luxury-car, sports-car, stationwagon, hybrid-car, electric-car, diesel-car, all-commercial, truck, van, pickup, bus-mini-bus, vintage-car, motorcycle) or make slugs (toyota, bmw, mercedes-benz, honda, …).
  • startUrls — optional: paste Motorist category URLs (e.g. https://motorist.sg/used-cars/suv); they override the segments above.
  • includeDetails (default true) — open each car's detail page to add OMV/ARF/road tax/engine/power/transmission/fuel, the full photo gallery and the dealer/seller phone & WhatsApp lead. Turn off for a fast, cheap grid-only run.
  • minPrice / maxPrice — asking-price bounds (SGD). maxMileageKm / maxDepreciation / minCoeMonthsLeft / maxOwners — narrow by condition. makes / fuelTypes — keep only matching cars.
  • maxResults / maxResultsPerSegment (default 100 / 0) — caps for test runs or budget control.
  • monitorMode (default false) — emit only new or price-changed cars since the last run (see below).
  • dedupStoreName (default motorist-sg-state) — named store holding the monitor state.
  • proxyConfiguration — proxy settings (default Apify datacenter proxy; residential is not needed).

Output

One clean record per car:

{
"listingId": 44004,
"url": "https://www.motorist.sg/used-car/44004/lexus-ls500h-i-package",
"title": "LEXUS LS500H I PACKAGE",
"make": "Lexus",
"model": "LS500H I Package",
"adTier": "Premium",
"price": 369800,
"currency": "SGD",
"depreciationPerYear": 38943,
"monthlyInstallment": 3099,
"registrationDate": "18/07/2023",
"registrationDateIso": "2023-07-18",
"coeLeftText": "(9y 5m COE left)",
"coeYearsLeft": 9,
"coeMonthsLeft": 5,
"coeMonthsTotalLeft": 113,
"coeExpiryDate": "22/12/2035",
"coeExpiryDateIso": "2035-12-22",
"manufactureYear": 2023,
"numberOfOwners": 1,
"mileageKm": 27400,
"omv": 56397,
"arf": 79155,
"roadTaxPerYear": 6200,
"engineCapacityCc": 3456,
"powerKw": 264,
"powerBhp": 354,
"transmission": "Auto",
"fuelType": "Petrol-Electric",
"scheme": "Normal",
"features": "Airbags, ABS, powerful and reliable 3.5L V6 Hybrid engine, keyless entry/start, cruise control, Moonroof.",
"accessories": "Leather seats, sports rims, heads up display, ventilated seats, blind spot monitor, electric seats.",
"description": "Elegant Lexus LS 500 hybrid, made in Japan, genuine low mileage, very well maintained, easy financing available.",
"dealerName": "Prime Motor & Leasing Pte Ltd",
"sellerName": "Larry Toh",
"sellerPhone": "96861029",
"sellerWhatsapp": "https://wa.me/6596861029",
"contacts": [
{ "name": "Larry Toh", "mobile": "96861029", "whatsappUrl": "https://wa.me/6596861029" },
{ "name": "Stanley Ng", "mobile": "97953533", "whatsappUrl": "https://wa.me/6597953533" }
],
"photoCount": 12,
"photos": ["https://motoristprod.s3.ap-southeast-1.amazonaws.com/.../photo_1.jpeg", "..."],
"thumbnailUrl": "https://motoristprod.s3.ap-southeast-1.amazonaws.com/.../thumb_1.jpeg",
"postedDate": "26 Jun 26",
"leadScore": 95,
"sourceCategory": "all-vehicles",
"scrapedAt": "2026-06-26T04:30:00.000Z"
}

What to expect (field coverage)

Motorist is dealer-entered data, so some fields appear only when the dealer published them. All prices are in SGD.

Field groupAlways presentPresent when published / in detail mode
Identity & pricelistingId, url, title, make, price, depreciationPerYear, registrationDatemodel, monthlyInstallment, adTier, bodyType*
ConditioncoeLeftText, coeMonthsTotalLeft, mileageKm, numberOfOwnerscoeExpiryDate, manufactureYear (detail)
Specs (detail mode)omv, arf, roadTaxPerYear, engineCapacityCc, powerKw/Bhp, transmission, fuelType, scheme
Dealer lead (detail mode)dealerNamesellerName, sellerPhone, sellerWhatsapp, contacts[]
Content (detail mode)description, features, accessories
MediathumbnailUrlphotos[], photoCount (detail mode)
ScoringleadScore, sourceCategory, scrapedAt

A blank field means it wasn't published for that car — never that scraping failed. Nothing is dropped, so you always get the richest record available.

Dealer/seller leads (phone, WhatsApp, contact name), the OMV/ARF/engine/power specs and the description/features/accessories come from each car's detail page — keep includeDetails on (the default) to get them.

*bodyType is filled only when you scrape a body-type segment (e.g. suv, sedan); it is blank when scraping all-vehicles or a specific make.

Monitor only new cars & price drops

Turn on monitorMode and the actor saves the price of every car it has seen in a named key-value store (dedupStoreName), then on each later run emits only cars that are new or whose price changed — tagged with monitorStatus:

  • new — a car not seen before.
  • price_drop — the price fell (with previousPrice).
  • price_increase — the price rose (with previousPrice).

The first run emits everything (and seeds the state); subsequent runs emit only the delta. Combined with a daily Schedule, you get a clean feed of just the new cars and price reductions for your search — perfect for buyer alerts, dealer prospecting and BI ingestion.

  • Monitor mode is the actor's own dedupe layer — it complements, and does not conflict with, Apify Schedules (a cron trigger) or the Console Monitoring tab (charts & alerts). The Schedule triggers the run; monitor mode decides what's worth saving.
  • Use a distinct dedupStoreName per independent monitor so their states don't mix.
  • If you schedule frequent runs, enable the Schedule's exclusive option so a new run doesn't start before the previous one finishes writing its state.
  • Heads-up: a quiet run legitimately returns 0 items, which can trip a Console Monitoring "results lower than N" alert — expected behaviour, not an error.

Automate & schedule

Run this actor on autopilot and pull results into your own stack:

  • Apify API — start runs, fetch datasets, and manage schedules over REST.
  • apify-client for JavaScript and apify-client for Python — official SDKs.
  • Schedules — run it daily to track a make, body type or the whole market; pair with monitorMode for new-car and price-drop alerts.
  • Webhooks — trigger downstream actions (CRM import, Slack alert, email sequence) the moment a run finishes.
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });
const run = await client.actor('scrapesage/motorist-scraper').call({
segments: ['suv'],
makes: ['Toyota'],
monitorMode: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} new / price-changed cars & dealer leads`);

Integrate with any app

Connect the dataset to 5,000+ apps — no code required:

  • Make — multi-step automation scenarios.
  • Zapier — push new dealer leads straight into your CRM.
  • Slack — get notified when a monitored make lists a car or drops a price.
  • Google Drive / Sheets — auto-export every run to a spreadsheet.
  • Airbyte — pipe results into your data warehouse.
  • GitHub — trigger runs from commits or releases.

Use with AI assistants (MCP)

The output is clean, LLM-ready JSON. Call this actor from Claude, ChatGPT, or any agent framework through the Apify MCP server — ask your assistant to "find Toyota SUVs under $120k with at least 5 years COE left and list the dealers with their WhatsApp" and let it run the scraper for you.

Agent-ready: autonomous payments (x402 & Skyfire)

This actor is agent-ready — AI agents can discover it, run it, and pay for it autonomously, with no Apify account and no human in the loop. It uses pay-per-event pricing and limited permissions, so it qualifies for Apify's agentic-payment standards:

  • x402 — an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the Apify MCP server — no account, no API key.
  • Skyfire — agent-to-service payments for fully autonomous AI-agent workflows.

Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.

More scrapers from scrapesage

Build a complete Singapore automotive, property, lead-gen & market-intelligence stack:

Tips

  • Dealer prospecting: keep includeDetails on so every car carries the dealer/seller name, mobile and WhatsApp — no enrichment step needed. Filter by make or price band to build a focused outreach list, and dedupe by sellerPhone.
  • Value screening: sort the dataset by depreciationPerYear, omv or coeMonthsTotalLeft to surface value buys.
  • Cheap sampling: turn includeDetails off (and/or set a small maxResults) for a fast, cheap grid-only run with no phone numbers.
  • Recurring monitoring: combine monitorMode with Schedules and a webhook to push new cars and price drops into your CRM the moment they appear.

FAQ

How do I scrape a specific make or body type? Add it to segments (e.g. bmw or suv), or paste a Motorist category URL into startUrls. Use makes, minPrice/maxPrice, maxMileageKm and minCoeMonthsLeft to narrow further.

Does it need a Motorist API key or login? No. This actor reads Motorist's public listing pages — no key, cookie or login required.

Where does the dealer's phone number come from? From the car's own public detail page on Motorist, where the dealer/seller publishes their mobile and WhatsApp contact. Keep includeDetails on to collect it.

Why are some specs (OMV, ARF, power) or the phone empty with detail mode off? Those live on each car's detail page. Turn includeDetails on (the default) to capture them.

Can I export to Google Sheets, CSV, or Excel? Yes — one click in the dataset view, or automatically on every run via the Google Drive integration.

How do I monitor new cars or price drops automatically? Turn on monitorMode and create a Schedule. Each run outputs only new/changed cars, tagged with monitorStatus and previousPrice.

A field is empty — why? Some dealers don't publish every field (e.g. number of owners, OMV). Fields are blank only when the data wasn't published — never because the scraper skipped them.

Is scraping Motorist legal? This actor collects publicly available data only. You're responsible for using the data in compliance with applicable laws (e.g. Singapore's PDPA for personal data) and Motorist's terms.

Need help?

Open an issue on the actor's Issues tab, or visit the Apify help center. Feature requests are welcome — this actor is actively maintained.