EasyAuto123 Scraper - Vehicle Listings, VINs & Dealer Data
Pricing
from $1.00 / 1,000 dataset items
EasyAuto123 Scraper - Vehicle Listings, VINs & Dealer Data
Scrape EasyAuto123 vehicle listings into clean structured data. Extract prices, VINs, odometer readings, make, model, year, trim, specs, images, dealer names, locations, contact details, listing URLs, and optional extra fields for market research, lead generation, and inventory tracking.
Pricing
from $1.00 / 1,000 dataset items
Rating
0.0
(0)
Developer
Abot API
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
EasyAuto123 Scraper: Used Car Listings, Prices & Dealer Details
EasyAuto123 Scraper turns easyauto123.com.au into a clean used-vehicle dataset. Get make, model, variant, year, price, odometer, VIN, fuel and transmission, plus the dealer's name, address, phone, email and rating for every listing. Build a search from filters or paste EasyAuto123 links, switch on detail fields for specs, ratings and full photo sets, track the same search over time with incremental mode, then export to JSON, CSV or Excel, or pull results straight into your app through the API.
Why This Scraper?
- Two ways to build a pull. Search by make, model, variant, dealer location, price, year and odometer range, body type, fuel, transmission, colour, lifestyle, size and EasyAuto123 category, or paste search and vehicle URLs directly.
- Listing and detail depth. Turn on detail fields to add engine and drive specifications, ANCAP and CO2 ratings, warranty terms and extra photo sets, fetched from each vehicle's own page.
- Dealer details attached. Store name, address, phone, email and rating are attached from EasyAuto123's store directory whenever it is available, no separate lookup needed.
- Built for monitoring. Incremental mode tracks the same search across scheduled runs and classifies every vehicle as new, updated, unchanged, reappeared or expired. Read the limits under "Resume and recurring updates" before relying on expiry detection.
- Skip what you already have. Point a run at a previous run or dataset and it never re-saves or re-bills vehicles already saved there (see the limit on how far a resumed search walks, below).
- Cost control built in. Max items and max pages cap a run before it starts, and detail fields carry a separate, clearly billed surcharge only when they are actually fetched successfully.
- Deliver straight to your apps. Pipe results into Notion, Linear, Airtable or Apify through MCP connectors as an optional extra step.
Use Cases
- Dealers and resellers: monitor EasyAuto123 stock, pricing and store coverage against your own inventory.
- Price and market researchers: track how price, odometer and stock status move for specific makes, models or price bands over time.
- Lead generation and CRM teams: pull dealer contact details and vehicle specs to route enquiries to the right store.
- Comparison sites and marketplaces: build a feed of listings with specs, images and store details for your own site or app.
- Finance, insurance and valuation teams: gather year, odometer, VIN and specification data to support valuations.
Data You Get
Sample shape: values are illustrative placeholders, not from a live record.
| Field | Example |
|---|---|
listingId | "sample-listing-00001" |
url | EasyAuto123 link to the vehicle's own detail page |
title | "2019 Toyota Corolla Ascent Sport" |
make / model / variant | "TOYOTA" / "COROLLA" / "Ascent Sport" |
year | 2019 |
price / priceType | 24990 / "Drive Away" |
odometer | 52000 |
vin | "SAMPLEVIN00000001" |
fuelType / transmission / driveType | "Petrol" / "Automatic" / "FWD" |
engineCapacity | "1800" |
colour / vehicleTypes | "White" / ["Hatchback"] |
fuelConsumption / co2Emission / ancapRating | "6.4" / "150" / "5 star" (when detail fields are on) |
state / location / region | "QLD" / "Sample Suburb" / "Sample Region" |
carType / banner / status | "Quality Verified" / "Reduced" / "IN-STOCK" |
primaryImage / imageCount | image URL / 12 |
storeName / storeAddress | "easyauto123 Sample Suburb" / "1 Sample Street, Sample Suburb QLD 4000" |
storePhone / storeEmail / storeRating | "(07) 5550 1234" / "sales@example.com" / 4.6 |
warranty / engineSpecifications / driveSpecifications / suspension | full detail-page spec objects (when detail fields are on) |
changeType / changedFields | "UPDATED" / ["price"] (incremental mode only) |
firstSeenAt / lastSeenAt | ISO timestamps (incremental mode only) |
storeRaw | the complete source store object |
rawVehicle | the complete source vehicle object |
How to Use
- Pick a mode:
search(build a filtered search) orurl(paste EasyAuto123 links). - Fill in the filters for search mode, or add one or more search or vehicle URLs for url mode.
- Set Max items (and optionally Max pages) to control run size and cost, then click Start.
- Download the dataset as JSON, CSV or Excel, or read it through the API.
Search by make, model and fuel type:
{"mode": "search","makes": ["Toyota"],"models": ["COROLLA"],"fuelTypes": ["Petrol"],"maxItems": 20}
Search by location and price range:
{"mode": "search","locations": ["Hendra, QLD"],"minPrice": 15000,"maxPrice": 35000,"sort": "price-asc","maxItems": 50}
Paste a listing search URL:
{"mode": "url","urls": ["https://easyauto123.com.au/buy/used-cars?page=1&limit=20&fuel-type=Hybrid"],"fetchDetails": true}
Cheaper list-only run, no detail fields:
{"mode": "search","vehicleTypes": ["SUV"],"fetchDetails": false,"maxItems": 100}
Run it from your code
Python:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("abotapi/easyauto123-cars-scraper").call(run_input={"mode": "search", "makes": ["Toyota"], "maxItems": 20})for vehicle in client.dataset(run["defaultDatasetId"]).iterate_items():print(vehicle["title"], vehicle["price"])
JavaScript:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('abotapi/easyauto123-cars-scraper').call({ mode: 'search', makes: ['Toyota'], maxItems: 20 });const { items } = await client.dataset(run.defaultDatasetId).listItems();
Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.
Max items and max pages
Max items is the main cap: the run stops once that many vehicles have been saved or a search runs out of pages (read the short-page limitation under "Resume and recurring updates" below, which can end a search early). Max pages is optional; leave it at 0 for no page cap, and set it only when you want to limit how far a single search or pasted URL can page through results.
Resume and recurring updates
- A short results page ends that search or URL. This is a real limitation, not a setting. Every search or pasted URL is walked from its first page, and a results page is treated as the last one as soon as it yields fewer than 20 vehicles this run can still take: vehicles already collected (earlier in the same run, or seeded by
resumeFromRunId) do not count, and neither do slots beyond what is left of Max items. The walk then stops for that search or URL, and deeper pages are silently skipped. Cases that trigger it:- Several pasted URLs in one run. If a later URL's results overlap vehicles already collected from an earlier URL, that later URL stops at its first overlapping page. Search mode builds a single search and is not affected by this case. If your URLs overlap, run them as separate runs.
- Resume. A resumed search starts again at page 1, which normally holds vehicles the earlier run already saved, so the walk usually stops right there and returns few or no new vehicles. To extend a large pull, paste the search in URL mode with a
pagenumber after the point where the earlier run stopped, instead of resuming the same search. - Incremental mode with a tight Max items. Unchanged vehicles are held back and do not count toward Max items, so once some changes have been returned and fewer than 20 slots remain, the next page is read only partly and taken as the end. With the default Max items of
20, a scheduled run can stop one page after the first change it finds and miss changes further down. Set Max items at least 20 above the total number of vehicles your search returns. - Pasted URLs with
limitbelow 20. Every page of such a URL looks short, so only its first page is read. Keeplimit=20or higher. - Listings moving between pages mid-run. On a busy search, a vehicle can shift from one page to the next while the run is paging, which can end that search one page early.
resumeFromRunIdcontinues ONE specific interrupted run. Paste a previous run ID or dataset ID and this run never re-saves or re-bills vehicles already saved there, subject to the page limitation above.- Incremental mode (
incrementalMode) is for scheduling the SAME search again and again and only getting what changed. The first run returns every matching vehicle asNEW. Later runs return onlyNEW,UPDATEDandREAPPEAREDvehicles by default. Turn onemitUnchangedoremitExpiredto also return (and bill) unchanged or expired vehicles. - State is kept separately for each distinct combination of filters (or pasted URLs), plus whether detail fields are fetched. Raising Max items or Max pages tomorrow does not start a new baseline.
stateKeyoptionally names or shares a monitoring campaign across otherwise different setups; leave it empty to let the actor derive one automatically. EXPIREDrows are only produced withemitExpiredon, when the run believes it reached the end of every search or URL it was given, with no Max items cap hit and noresumeFromRunId. That end check is not reliable today: an early stop caused by the short-page limitation above is counted as a complete scan, so every tracked vehicle the run did not reach is markedEXPIREDeven though it is still listed. For example, a 45-vehicle search run with Max items2and one price change returns that change plus 43 falseEXPIREDrows.EXPIREDrows are added after the Max items check, so they can also take a run past that cap. If you turn onemitExpired, track one search (or one URL) per run and set Max items at least 20 above the total number of vehicles the search returns; otherwise leave it off. A vehicle wrongly markedEXPIREDcomes back asREAPPEARED(and is billed) on the next run that finds it.- A field-level change is only reported when the value genuinely changes between two successfully observed values. The vehicle's own last-updated timestamp, and the signed query parameters on its image links, do not by themselves count as a change.
Send results into your apps (MCP connectors)
Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape: the Apify dataset is never changed.
What gets written to the connector: a condensed, human-readable summary of each record, not the full JSON. Each item becomes one entry with a title (the vehicle name) and its key fields flattened to plain text. The complete record always stays in the Apify dataset.
- Authorize a connector once under Apify → Settings → Integrations (Notion, Linear, Airtable, or Apify).
- Select it in the "Pipe results into your apps" input field. (If the picker is empty, you haven't authorized a connector yet.)
- For Notion, also set
notionParentPageUrlto the page where items should be created.
The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | string | search | Build a search from filters, or start from one or more URLs. |
urls | array | sample URL | EasyAuto123 search or vehicle URLs (url mode). |
keywords | array | (none) | Optional free-text make word (search mode). Prefer Makes, Models and Variants for exact matches. |
makes | array | (none) | Vehicle makes to include. |
models | array | (none) | Vehicle models, used together with Makes. |
variants | array | (none) | Vehicle variants, used together with Makes and Models. |
locations | array | (none) | Dealer locations in Suburb, STATE form. |
vehicleTypes | array | (none) | Body and type labels, for example SUV, Wagon, Sedan. |
fuelTypes | array | (none) | Fuel labels to include (Petrol, Diesel, Hybrid, Electric). |
transmissions | array | (none) | Transmission labels to include (Automatic, Manual). |
colours | array | (none) | Vehicle colours to include. |
lifestyles | array | (none) | Lifestyle labels, such as Family or Tradie. |
vehicleSizes | array | (none) | Size labels to include (Small, Medium, Large). |
carTypes | array | (none) | EasyAuto123 vehicle category (Quality Verified, Budget). |
minYear | integer | (none) | Only include vehicles from this release year or newer. |
maxYear | integer | (none) | Only include vehicles from this release year or older. |
minPrice | integer | (none) | Only include vehicles at or above this displayed price. |
maxPrice | integer | (none) | Only include vehicles at or below this displayed price. |
minOdometer | integer | (none) | Retired: the live source has no minimum-odometer facet, so this value is ignored. Kept for saved tasks. |
maxOdometer | integer | (none) | Only include vehicles at or below this odometer reading. |
sort | string | price-reduced | Result ordering. |
fetchDetails | boolean | true | Adds fields only available on individual vehicle pages, with a per-item surcharge on each successfully enriched item. |
maxItems | integer | 20 | Stop after this many saved vehicles. |
maxPages | integer | 0 | Optional page cap per search or URL (0 = no cap). |
resumeFromRunId | string | (none) | Continue one interrupted run without re-scraping what it already saved. |
incrementalMode | boolean | false | Return only new and changed vehicles on scheduled runs of the same search. |
stateKey | string | (none) | Name or share an incremental-mode monitoring campaign. |
emitUnchanged | boolean | false | Also return (and bill) unchanged vehicles, marked UNCHANGED. |
emitExpired | boolean | false | Also return (and bill) vehicles no longer found, marked EXPIRED. |
mcpConnectors | array | (none) | Optional: send a summary of each record to apps you authorized under Integrations. |
notionParentPageUrl | string | (none) | Notion connector only: page under which vehicle pages are created. |
maxNotifyListings | integer | 50 | Cap on items written to each connector per run. |
proxyConfiguration | object | Apify Proxy | Connection settings. |
Output Example
Sample shape: values are illustrative placeholders, not from a live record.
{"listingId": "sample-listing-00001","url": "https://easyauto123.com.au/buy/used-cars/details/2019/TOYOTA/COROLLA/Ascent-Sport/QLD/Sample-Region/Sample-Suburb/Automatic/White/Hatchback/SAMPLEVIN00000001","title": "2019 Toyota Corolla Ascent Sport","make": "TOYOTA","model": "COROLLA","variant": "Ascent Sport","year": 2019,"price": 24990,"priceType": "Drive Away","odometer": 52000,"vin": "SAMPLEVIN00000001","fuelType": "Petrol","transmission": "Automatic","driveType": "FWD","engineCapacity": "1800","colour": "White","vehicleTypes": ["Hatchback"],"state": "QLD","location": "Sample Suburb","region": "Sample Region","carType": "Quality Verified","status": "IN-STOCK","primaryImage": "https://example.com/sample-vehicle-1.jpg","imageCount": 12,"storeName": "easyauto123 Sample Suburb","storeAddress": "1 Sample Street, Sample Suburb QLD 4000","storePhone": "(07) 5550 1234","storeEmail": "sales@example.com","storeRating": 4.6}
Plan Requirement
The default proxy setting works out of the box. Detail pages automatically try the residential proxy group first, since they are less reliable on the default connection type, then fall back to your own proxy setting, so no extra setup is required. If you supply your own proxy URLs, or for heavy list-only runs, the residential proxy group under Connection can still give more headroom.
FAQ
How much does it cost?
You pay per record returned, plus a separate detail-enrichment surcharge only for items whose detail page was actually fetched and enriched successfully; suppressed or unchanged rows in incremental mode are never charged for it. The Pricing tab shows the current rates. Use Max items to cap the cost of any run.
Is it legal to scrape EasyAuto123?
This actor collects only publicly available vehicle listing data. You are responsible for how you use it: follow EasyAuto123's terms and the laws that apply to you, and get legal advice if you plan commercial redistribution. Listing details such as price and specifications are generally facts, but photos may be subject to third-party rights.
Can I get only new or changed vehicles on a schedule?
Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Each run then returns only new, updated and reappeared vehicles by default, and unchanged ones are not billed unless you turn on Emit unchanged.
What's the difference between Resume and Incremental mode?
resumeFromRunId continues ONE specific interrupted run from a pasted run or dataset ID. Incremental mode is for running the SAME search again and again on a schedule and remembers its own state, no ID needed. Use Resume after a run stops partway through; use Incremental mode for ongoing monitoring. Both share one current limitation: a results page with fewer than 20 vehicles the run can still take is treated as the end of that search, so a resumed search usually stops at page 1, and an incremental run with a tight Max items can stop early and, with emitExpired on, mark still-listed vehicles EXPIRED. See "Resume and recurring updates" above for the workarounds.
Does a run with several pasted URLs read all of them in full?
Not always. Each URL is paged from its start, but a page that repeats vehicles already collected from an earlier URL in the same run is treated as that URL's last page, so its deeper results are skipped without any error. If your URLs overlap (for example a broad search and a narrower one inside it), run them as separate runs, or use search mode, which builds a single search.
Why did my run fail instead of returning an empty dataset?
If a listing page still cannot be fetched after several retries, the run is marked failed instead of succeeded (anything already saved before that page stays in the dataset), so a blocked or unreachable site is not mistaken for "no matching vehicles". Run it again in a few minutes. Two softer failures do not stop the run: a vehicle whose detail page cannot be read still ships with its listing-level fields (and no detail surcharge), and if the store directory cannot be read, vehicles ship without the dealer name, address, phone, email and rating.
Can I use it with AI agents or MCP?
Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.
🔗 Want more car data?
Pair this actor with these related scrapers from the same team:
| 🚗 Autotrader US Scrape US car listings from Autotrader by make, model, ZIP, price, year, body style... | 🚗 Carsales.com.au Scraper Scrape structured vehicle listings from Carsales.com.au from $1 per 1K results. Built to... |
| 🚗 AutoTrader UK Scraper Pull structured vehicle listings from autotrader.co.uk at scale. Search by filters or use... | 🚗 Cars.com Scraper Scrape cars.com listings by make, ZIP and radius. 90+ fields per car: price, MSRP... |
| 🏷️ Gumtree AU Scraper Scrape gumtree.com.au classifieds across every vertical: for-sale goods, motors, real... | 🚗 AutoScout24 Scraper From $0.8/1K. A lean, production-grade scraper for autoscout24.com. Point it at a search... |
💬 Support & custom scrapers
- 🐞 Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
- 🛠️ Need another site, extra fields or a private build? Email abotapi@proton.me or message Telegram @abotapi.
- ⭐ Enjoying it? A quick review on the actor page helps other users find it.