MachineryTrader & Mascus Equipment Scraper + Leads
Pricing
from $17.00 / 1,000 results
MachineryTrader & Mascus Equipment Scraper + Leads
Scrape used heavy & construction equipment from MachineryTrader (US) and Mascus (worldwide): excavators, dozers, loaders, cranes, tractors, trucks. Get make, model, year, price, hours, specs, photos, location and dealer name, phone and email. Filter by make, year, price, hours. Pay per result.
Pricing
from $17.00 / 1,000 results
Rating
0.0
(0)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
1
Monthly active users
21 hours ago
Last modified
Categories
Share
MachineryTrader & Mascus Equipment Scraper + Leads
Here is one real result, with every field the actor returns:
{"title": "2017 Hitachi ZX350LC-6N","make": "Hitachi","model": "ZX350LC-6N","year": 2017,"category": "crawlerexcavators","catalog": "construction","condition": "auction","listingType": "auction","priceAmount": null,"priceCurrency": "USD","priceEur": null,"hours": 9346,"meterReading": 9346,"meterUnit": "h","locationCity": "Davenport, Florida","locationCountry": "US","dealerName": "Ritchie Bros Orlando","dealerPhone": "+31 765242600","dealerCountry": "US","dealerUrl": "https://www.mascus.com/ritchie-bros-orlando/c31558d4,1,relevance,searchdealer.html","listingUrl": "https://www.mascus.com/construction/crawler-excavators/hitachi-zx350lc-6n/4gihhneh.html","imageUrl": "https://dnge9sb91helb.cloudfront.net/image/product/medium/rbauctionusathree/hitachi-zx350lc-6n,abf1c03a00d44b4c.jpg","imageCount": 50,"listedDate": "2026-08-09T18:14:13","productId": "{11F2E8B2-88A6-40EA-A5C2-12FB1DC41F1C}","searchQuery": "excavator","source": "Mascus","observedAt": "2026-08-09T21:24:23.650Z","priceUsd": null,"videoCount": 0,"isFeatured": false,"isHighlighted": false,"isNew24h": true,"dealerId": "{C31558D4-64F6-44F8-B72E-70E3C4EB2A92}","auctionStartDate": "2026-08-27T15:00:00","auctionEndDate": "2026-08-29T02:00:00","auctionEventName": "Orlando, FL, USA - Aug 27, 2026","rentalPriceDaily": null,"rentalPriceWeekly": null,"rentalPriceMonthly": null,"serialNumber": "1FFDDR70PHF940223","stockNumber": "15695949","images": ["https://dnge9sb91helb.cloudfront.net/imagetilewm/product/rbauctionusathree/hitachi-zx350lc-6n,abf1c03a00d44b4c.jpg","https://dnge9sb91helb.cloudfront.net/imagetilewm/product/rbauctionusathree/hitachi-zx350lc-6n,0f77daacc87c4d28.jpg","https://dnge9sb91helb.cloudfront.net/imagetilewm/product/rbauctionusathree/hitachi-zx350lc-6n,99686e5a7f924770.jpg"],"specs": {"brandmodel": "Hitachi ZX350LC-6N","yearofmanufacture": "2017","meterreadouthours": "9,346 h","location": "Davenport, Florida","internalstocknumber": "15695949","manufacturenumber": "1FFDDR70PHF940223","otherinformation": "2017 Hitachi ZX350LC-6N Tracked Excavator\n\nAir Conditioner, Rear View Camera, 2016 US EPA Label, Requires Diesel Exhaust Fluid, 10 ft 7 in Stick, 31.5 in Triple Grouser Track Shoes, 53 in Digging Bucket"},"dealerEmail": "emea@rbauction.com","dealerContactName": "Auction Sales","dealerAddress": "Mark S Clarkelaan 21, Zevenbergen, Noord-Brabant, 4761 RK, NL","dealerRegion": "Noord-Brabant","dealerPostalCode": "4761 RK","latitude": 28.23907,"longitude": -81.64746,"googleMapsUrl": "https://www.google.com/maps/search/?api=1&query=28.23907,-81.64746","categoryPath": "construction/excavators/crawlerexcavators","updatedDate": "2026-08-09T19:23:57.01"}
The most complete heavy equipment scraper available. It returns every field the MachineryTrader (United States) and Mascus (Europe and worldwide) marketplaces expose for each machine, plus the selling dealer's name, phone, email, contact and full address as a ready lead, and gives you eleven filters to target exactly the listings you need.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
The actor searches heavy and construction equipment marketplaces for the terms you pass, paginates through the matching listings, and writes one normalized record per machine to the run's dataset. Each record carries make, model, year, price, meter hours, category and location, plus the selling dealer as a usable lead (name, phone, and, with detail scraping on, email, contact name, website and full postal address).
Two sources are available. mascus (default) covers Europe and worldwide inventory. machinerytrader covers United States inventory. Both emit the same flat record shape, so you can mix them across runs without changing your parsing.
Turn on scrapeDetails to open each listing page and add the serial or VIN number, stock number, full specifications, description, the complete image gallery, and the dealer's email, contact name, website, and mapped address. Missing source values are returned as null, never invented.
Quickstart
Open the actor, paste this into the input, and press Run. It returns up to 10 excavator and bulldozer listings from Mascus with full dealer contact detail.
{"searchQueries": ["excavator", "bulldozer"],"source": "mascus","scrapeDetails": true,"maxListings": 10}
Every input except the search is optional. With just searchQueries set, the actor returns the most recent matching listings (default maxListings is 10).
Input reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
searchQueries | string[] | no | ["excavator","bulldozer"] | One or more equipment searches, for example excavator, wheel loader, crane, or a make and model like cat 320. Each query is searched separately and every listing is tagged with the query that produced it. |
source | enum | no | mascus | Which marketplace to read. mascus covers Europe and worldwide inventory. machinerytrader covers United States inventory. |
make | string | no | (any) | Keep only listings from this manufacturer, for example Caterpillar, Komatsu, Volvo, John Deere, Hitachi. |
model | string | no | (any) | Keep only listings of this model, for example 320, 336, L120. Works best with a make. Applies to the MachineryTrader source. |
state | string | no | (any) | Keep only listings in this US state, for example Texas, California, Florida. Applies to the MachineryTrader source. |
yearMin | integer | no | (any) | Keep only listings built in this year or later. |
yearMax | integer | no | (any) | Keep only listings built in this year or earlier. |
priceMin | integer | no | (any) | Keep only listings priced at or above this amount (listing currency, or EUR when no local price is shown). Priceless listings are excluded when a price filter is set. |
priceMax | integer | no | (any) | Keep only listings priced at or below this amount. |
hoursMax | integer | no | (any) | Keep only listings with at most this many operating hours on the meter. |
country | string | no | (any) | Keep only listings in this country as a 2-letter ISO code, for example US, DE, FR, GB, ES, IT, NL. |
condition | enum | no | (any) | One of used, new, auction. |
listingType | enum | no | (any) | One of sale, auction, rental, marketplace. |
scrapeDetails | boolean | no | false | When on, each listing page is fetched to add serial/VIN, stock number, full specifications, description, the complete image gallery, and the dealer's email, website, contact name and full address. Slower but far richer. |
maxListings | integer | no | 10 | Maximum listings to collect across all searches. Empty and failed runs are never charged. |
Filters combine with logical AND. On the Mascus source, filters are applied client-side; on MachineryTrader they are passed through as URL parameters.
Output reference
One dataset item per listing. Types: string, integer, boolean, string[], object, or null when the source value is absent. Fields after observedAt are additive and populate mainly when scrapeDetails is on.
| Field | Type | Description |
|---|---|---|
title | string | Listing title, usually year, make and model. |
make | string | Manufacturer or brand. |
model | string | Model designation. |
year | integer | Year of manufacture. |
category | string | Equipment category, for example crawlerexcavators. |
catalog | string | Top-level catalog: construction, agriculture, material-handling, transportation, forestry. |
condition | string | used or auction. |
listingType | string | sale, auction, rental, or marketplace. |
priceAmount | integer | Asking price in the listed currency, or null if price on request. |
priceCurrency | string | Currency of the asking price. |
priceEur | integer | Asking price converted to EUR, or null. |
hours | integer | Meter hours when the meter reports hours, else null. |
meterReading | integer | Raw meter reading value. |
meterUnit | string | Meter unit (h for hours, km, and similar). |
locationCity | string | City or region of the machine. |
locationCountry | string | Country code of the machine. |
dealerName | string | Selling dealer or company name (the lead). |
dealerPhone | string | Dealer phone number (the lead). |
dealerCountry | string | Dealer country code. |
dealerUrl | string | Link to the dealer profile. |
listingUrl | string | Direct link to the listing. |
imageUrl | string | Main listing image. |
imageCount | integer | Number of photos on the listing. |
listedDate | string | When the listing was posted. |
productId | string | Unique listing id. |
searchQuery | string | The search query that produced this record. |
source | string | Data source (Mascus or MachineryTrader). |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
priceUsd | integer | Price in USD when the source reports it, else null. |
videoCount | integer | Number of videos on the listing. |
isFeatured | boolean | Whether the listing is featured. |
isHighlighted | boolean | Whether the listing is highlighted. |
isNew24h | boolean | Listed within the last 24 hours. |
dealerId | string | Dealer id. |
auctionStartDate | string | Auction start, for auction listings. |
auctionEndDate | string | Auction end, for auction listings. |
auctionEventName | string | Auction event name. |
rentalPriceDaily | integer | Rental price per day, for rental listings. |
rentalPriceWeekly | integer | Rental price per week. |
rentalPriceMonthly | integer | Rental price per month. |
serialNumber | string | Serial or VIN number (detail scrape). |
stockNumber | string | Dealer stock number (detail scrape). |
accessories | string | Listed accessories (detail scrape). |
description | string | Full listing description (detail scrape). |
images | string[] | Full image gallery URLs (detail scrape). |
specs | object | Key/value specifications block (detail scrape). |
dealerEmail | string | Dealer email (detail scrape; recovered from the dealer site on MachineryTrader). |
dealerWebsite | string | Dealer website (detail scrape). |
dealerContactName | string | Dealer contact person (detail scrape). |
dealerWhatsApp | string | Dealer WhatsApp number (detail scrape). |
dealerAddress | string | Single-line dealer postal address (detail scrape). |
dealerRegion | string | Dealer region or state (detail scrape). |
dealerPostalCode | string | Dealer postal code (detail scrape). |
latitude | number | Machine latitude (detail scrape). |
longitude | number | Machine longitude (detail scrape). |
googleMapsUrl | string | Google Maps link to the machine location (detail scrape). |
modelGroup | string | Model group (detail scrape). |
categoryPath | string | Full category path (detail scrape). |
updatedDate | string | When the listing was last updated (detail scrape). |
Example output record
Real record from a live run (input {"searchQueries":["excavator"],"source":"mascus","scrapeDetails":true,"maxListings":3}). The images array is trimmed here for length; a full run returns all photo URLs (imageCount, 50 in this record).
{"title": "2017 Hitachi ZX350LC-6N","make": "Hitachi","model": "ZX350LC-6N","year": 2017,"category": "crawlerexcavators","catalog": "construction","condition": "auction","listingType": "auction","priceAmount": null,"priceCurrency": "USD","hours": 9346,"meterReading": 9346,"meterUnit": "h","locationCity": "Davenport, Florida","locationCountry": "US","dealerName": "Ritchie Bros Orlando","dealerPhone": "+31 765242600","dealerCountry": "US","listingUrl": "https://www.mascus.com/construction/crawler-excavators/hitachi-zx350lc-6n/4gihhneh.html","imageCount": 50,"listedDate": "2026-08-09T18:14:13","productId": "{11F2E8B2-88A6-40EA-A5C2-12FB1DC41F1C}","searchQuery": "excavator","source": "Mascus","observedAt": "2026-08-09T21:24:23.650Z","isNew24h": true,"auctionStartDate": "2026-08-27T15:00:00","auctionEndDate": "2026-08-29T02:00:00","auctionEventName": "Orlando, FL, USA - Aug 27, 2026","serialNumber": "1FFDDR70PHF940223","stockNumber": "15695949","dealerEmail": "emea@rbauction.com","dealerContactName": "Auction Sales","dealerAddress": "Mark S Clarkelaan 21, Zevenbergen, Noord-Brabant, 4761 RK, NL","latitude": 28.23907,"longitude": -81.64746,"googleMapsUrl": "https://www.google.com/maps/search/?api=1&query=28.23907,-81.64746","categoryPath": "construction/excavators/crawlerexcavators","updatedDate": "2026-08-09T19:23:57.01"}
Run via API and CLI
Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~machinery-trader-equipment-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"searchQueries":["wheel loader"],"source":"machinerytrader","state":"Texas","maxListings":25,"scrapeDetails":true}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~machinery-trader-equipment-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"searchQueries":["excavator","crane"],"make":"Caterpillar","yearMin":2018,"maxListings":100}'
Apify CLI:
apify call scrapers_lat/machinery-trader-equipment-scraper \--input '{"searchQueries":["telehandler"],"source":"mascus","maxListings":50}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.
Billing and limits
- Pay per result. You are charged per listing returned (
resultevent). See the pricing tab for the current per-result price. - No charge on failure. If a run errors, the actor writes a single item with a populated
errorfield and does not charge for it. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging further billable results. - Free Apify plans are capped at 10 listings per run. Upgrade for higher
maxListings. - Detail scraping is slower. With
scrapeDetailson, each listing page is fetched individually, so runs take longer. MachineryTrader is bot protected and always runs through a US residential proxy.
FAQ and troubleshooting
A run returned 0 listings. Why?
The search or filter combination matched nothing. Loosen filters (remove make, widen the year or price range), or try a broader search term. Zero-result runs are not charged.
How do I get the dealer's email and full address?
Set scrapeDetails to true. The actor then opens each listing page and adds dealerEmail, dealerContactName, dealerWebsite, and dealerAddress. On MachineryTrader the email is recovered from the dealer's own website when the marketplace hides it.
What is the difference between the two sources?
mascus covers Europe and worldwide inventory and needs no proxy. machinerytrader covers United States inventory and always runs through a US residential proxy because the site is bot protected.
Why is priceAmount null?
The listing shows price on request, or it is an auction lot with no fixed price. Missing values are returned as null, never invented. Check priceEur or priceUsd for a converted figure when available.
Can I search several equipment types at once?
Yes. Pass multiple terms in searchQueries. Each is searched separately and every record carries the searchQuery that produced it.
Is this an official MachineryTrader or Mascus tool? No. This actor is independent and has no affiliation with MachineryTrader, Mascus, or Sandhills. It reads only publicly listed data. Use it in accordance with each site's terms.
Related scrapers
- Mascus Equipment Scraper: heavy equipment listings from Mascus.
- Machinio Equipment Scraper: used machinery and equipment listings from Machinio.
- Ritchie Bros Equipment Scraper: heavy equipment auction lots from Ritchie Bros.
- TractorHouse Equipment Scraper: farm tractors and equipment from TractorHouse.
- TruckPaper Trucks Scraper: commercial trucks and trailers from TruckPaper.
- Copart Scraper: salvage and used vehicle auction listings.
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.
Independent tool, not affiliated with MachineryTrader, Mascus, or Sandhills. Accesses only publicly available listing data. Use in accordance with each site's terms of service.
