# Machinery Trader Scraper (`parseforge/machinerytrader-scraper`) Actor

Scrapes Machinery Trader equipment listings by search URL or filters. Returns each listing as a flat row with price, hours, year, serial number, location, and other details.

- **URL**: https://apify.com/parseforge/machinerytrader-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Automation, E-commerce
- **Stats:** 41 total users, 7 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $24.00 / 1,000 result items

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

[![ParseForge](https://raw.githubusercontent.com/ParseForge/apify-assets/main/banner.jpg)](https://apify.com/parseforge?fpr=vmoqkp)

### Machinery Trader Scraper

**Scrape Machinery Trader listings for any equipment category, manufacturer, or URL, up to a million per run.** Every listing comes with its price, hours, year, serial number, and location. No login or API key. Export to CSV, JSON, Excel, or XML.

Machinery Trader's public search pages hold the asking price, hours, and specs for nearly every piece of heavy equipment for sale in North America, but the site has no official API and manual copying is slow. This Actor reads those listing pages directly, filters by category, manufacturer, year, price, hours, horsepower, ROPS, drive type, condition, state, or certification, and returns each match in one fixed schema.

| Who uses it | What they scrape Machinery Trader for |
|---|---|
| Equipment dealers | Monitor competitor asking prices for the same make and model in their region |
| Market researchers | Track supply and pricing trends for specific equipment categories over time |
| Fleet managers | Build a shortlist of available machines that meet their spec and budget |
| Data analysts | Feed structured equipment listings into pricing models or dashboards |

### What it does

This Actor collects Machinery Trader equipment listings by search URL or filter criteria, and returns each one as a flat row with its price, hours, year, serial number, location, and other listing details.

- 🔍 **Search by URL or filters:** paste a Machinery Trader search or detail URL, or set category, manufacturer, year, price, hours, horsepower, ROPS, drive type, condition, state, and certified filters.
- 📊 **Flat row per listing:** every result includes the listing title, price, hours, year, serial number, location, and other fields in one consistent schema.
- ⚙️ **Deep filtering:** narrow results by equipment category, manufacturer, year range, price range, hours, horsepower, ROPS, drive type, condition, state, and certified status.
- 📦 **Bulk export:** collect up to 1,000,000 listings per run and export to CSV, JSON, Excel, or XML.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

### What you can do with Machinery Trader data

**📈 Track competitor pricing.**

A dealer runs the Actor weekly for a manufacturer and state, then compares asking prices against their own inventory to adjust listings.

**🔎 Find machines that meet a spec.**

A fleet manager sets category, year range, horsepower, and ROPS filters to get a shortlist of available excavators or dozers in their region.

**📊 Build a market dataset.**

A market researcher pulls all listings for a category over several months to analyze price trends and supply volume.

**🧹 Clean data for analysis.**

A data analyst exports listings to CSV and joins them with internal records to spot pricing anomalies or inventory gaps.

### Why choose this scraper

|  | What you get |
|---|---|
| **No API key** | Reads public Machinery Trader pages directly, no registration or rate limits |
| **One fixed schema** | Every listing returns the same fields, so you can merge runs without cleaning |
| **Filter before you pay** | Category, manufacturer, year, price, hours, horsepower, ROPS, drive type, condition, state, and certified filters cut noise before storage |
| **Scale to a million** | Paid users can pull up to 1,000,000 listings in a single run |

### How it compares

No other Store actor targets Machinery Trader the same way, so the honest comparison is with the alternatives teams actually weigh.

| | Machinery Trader Scraper | Build it in-house | By hand |
|---|---|---|---|
| Setup | Run it now, zero config | Days of engineering | None, but hours per pull |
| When Machinery Trader changes | Maintained for you | You fix it | You re-learn the page |
| Proxies, retries, anti-bot | Built in | Your problem | Browser only |
| Output | Fixed JSON schema, CSV/Excel export | Whatever you build | Copy-paste |
| Cost | Pay per result | Engineering time | Analyst hours |

### Configure the run

Drive the Actor from a Machinery Trader search or detail URL, or set category, manufacturer, year, price, hours, horsepower, ROPS, drive type, condition, state, and certified filters. Filters run as each listing is read, so only matches reach your dataset. The Input tab lists every parameter.

A first run with the defaults:

```json
{
  "startUrl": "https://www.machinerytrader.com/listings/search?ListingType=For%20Retail",
  "maxItems": 10
}
```

A larger pull:

```json
{
  "startUrl": "https://www.machinerytrader.com/listings/search?ListingType=For%20Retail",
  "maxItems": 200
}
```

### Pricing

Pay-per-result: **$0.032 per result** collected. You pay only for the results written to your dataset.

| Results collected | Approximate cost |
|---|---|
| 100 results | $3.20 |
| 1,000 results | $32.00 |
| 10,000 results | $320.00 |

New Apify accounts start with $5 in free credit.

### Free users

Free-plan runs return up to 10 results as a preview. [Upgrade your Apify plan](https://console.apify.com/sign-up?fpr=vmoqkp) to collect up to 1,000,000 results per run.

### Run it

1. [Create a free Apify account with $5 in credit](https://console.apify.com/sign-up?fpr=vmoqkp).
2. Open the [Machinery Trader Scraper](https://apify.com/parseforge/machinerytrader-scraper?fpr=vmoqkp).
3. Set your inputs and any filters, then click **Start**.
4. Export the results as CSV, Excel, JSON, or XML from the **Dataset** tab.

Run it programmatically through the [Apify API](https://docs.apify.com/api/v2) (`run-sync-get-dataset-items`) or the [ApifyClient](https://docs.apify.com/api/client/js) for JavaScript and Python.

### Use with AI agents (MCP)

Give an AI agent live access to Machinery Trader through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

```bash
claude mcp add --transport http apify "https://mcp.apify.com/?tools=parseforge/machinerytrader-scraper"
```

Then prompt it in plain language to run the scraper and read back the results.

### Troubleshooting

**Why am I getting no results?**

Check that your filters are not too restrictive. Try removing one filter at a time, or use a broader category or manufacturer. Also confirm the startUrl is a valid Machinery Trader search or detail page.

**Why did the run stop at 10 listings?**

Free Apify users are limited to 10 listings per run. Upgrade to a paid plan and set maxItems higher to collect more.

**Why are some listings missing fields?**

Machinery Trader listings do not always include every field. If a seller did not provide hours or serial number, that field will be empty in the output.

**Can I scrape a detail page instead of a search page?**

Yes. Paste the detail page URL into startUrl, and the Actor will return that single listing as one row.

**Why did I get an error about startUrl and filters?**

Use either startUrl OR the filter options, not both. If you provide a startUrl, the filter fields are ignored.

### FAQ

| Question | Answer |
|---|---|
| Do I need a Machinery Trader account or API key? | No. The Actor reads public listing pages directly, so no login or API key is required. |
| Can I scrape a specific search URL? | Yes. Paste any Machinery Trader search or detail URL into the startUrl field, and the Actor will collect the listings from that page. |
| What filters can I use? | You can filter by category, manufacturer, year range, price range, hours, horsepower, ROPS, drive type, condition, state, and certified status. |
| How many listings can I get in one run? | Free users are limited to 10 listings. Paid users can set maxItems up to 1,000,000. |
| What data does each listing include? | Each row includes the listing title, price, hours, year, serial number, location, and other fields shown in the sample output. |
| Can I export the results? | Yes. You can export to CSV, JSON, Excel, or XML from the Apify dataset. |
| Does this work for all equipment categories? | Yes. The category filter covers everything from excavators and dozers to trailers, cranes, and forestry equipment. |
| Can I filter by manufacturer? | Yes. The manufacturer filter includes thousands of brands, from Caterpillar and John Deere to smaller niche makers. |
| Is the data live? | The Actor reads the current public listing pages at the time of the run, so you get the latest asking prices and availability. |
| Can I schedule this to run automatically? | Yes. You can set up a schedule in Apify to run the Actor daily, weekly, or at any interval you need. |

### Related actors

Browse the full [ParseForge collection](https://apify.com/parseforge?fpr=vmoqkp) for more scrapers.

🆘 **Need help?** Email parseforge@protonmail.com with your run ID, your input, and what you expected.

⚠️ **Disclaimer.** This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by Sandhills Global, Inc. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

# Actor input Schema

## `startUrl` (type: `string`):

Direct URL to scrape from MachineryTrader. Can be either a search/listing page URL (e.g., https://www.machinerytrader.com/listings/search?ListingType=For%20Retail) or a detail page URL (e.g., https://www.machinerytrader.com/listing/for-sale/239377131/...). Use this OR the filter options below, but not both.

## `maxItems` (type: `integer`):

Maximum number of equipment listings to collect. Free users: Limited to 100. Paid users: Optional, max 1,000,000

## `category` (type: `string`):

Filter by equipment category (optional). In case of not selected, all categories will be scraped.

## `manufacturer` (type: `string`):

Filter by equipment manufacturer/brand (optional). Examples: 'Caterpillar', 'John Deere', 'Komatsu', 'Bobcat'.

## `yearMin` (type: `integer`):

Minimum equipment year (optional). Example: 2015

## `yearMax` (type: `integer`):

Maximum equipment year (optional). Example: 2024

## `serialNumber` (type: `string`):

Filter by equipment serial number (optional).

## `priceMin` (type: `integer`):

Minimum asking price in USD (optional).

## `priceMax` (type: `integer`):

Maximum asking price in USD (optional).

## `Hours` (type: `string`):

Filter by hours (optional).

## `horsePowerMin` (type: `integer`):

Filter by horse power (optional).

## `horsePowerMax` (type: `integer`):

Filter by horse power (optional).

## `rops` (type: `string`):

Filter by ROPS (optional).

## `driveType` (type: `string`):

Filter by drive type (optional).

## `condition` (type: `string`):

Filter by condition (optional).

## `state` (type: `string`):

Filter by state (optional).

## `certified` (type: `boolean`):

Filter by certified (optional).

## Actor input object example

```json
{
  "startUrl": "https://www.machinerytrader.com/listings/search?ListingType=For%20Retail",
  "maxItems": 10
}
```

# Actor output Schema

## `equipment` (type: `string`):

Complete dataset with all scraped equipment listings including specifications, pricing, dealer contacts, location, and images

## `overview` (type: `string`):

Overview view of equipment listings with key fields displayed in a table format

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrl": "https://www.machinerytrader.com/listings/search?ListingType=For%20Retail",
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/machinerytrader-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "startUrl": "https://www.machinerytrader.com/listings/search?ListingType=For%20Retail",
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/machinerytrader-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrl": "https://www.machinerytrader.com/listings/search?ListingType=For%20Retail",
  "maxItems": 10
}' |
apify call parseforge/machinerytrader-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parseforge/machinerytrader-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/ni5oTSfHpEHPDuq3a/builds/LL8DRUZpoevGnl52u/openapi.json
