# TractorHouse Listings Scraper (`piotrv1001/tractorhouse-listings-scraper`) Actor

Scrapes farm and heavy equipment listings from TractorHouse.com with prices, specs, hours, photos and dealer contact details.

- **URL**: https://apify.com/piotrv1001/tractorhouse-listings-scraper.md
- **Developed by:** [FalconScrape](https://apify.com/piotrv1001) (community)
- **Categories:** Automation, E-commerce, Agents
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 listings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use 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

### 🚜 TractorHouse Listings Scraper

Easily extract farm and heavy equipment listings from [TractorHouse](https://www.tractorhouse.com), **the largest marketplace for tractors, combines, and agricultural machinery in North America**. The **TractorHouse Listings Scraper** turns 400,000+ live for-sale listings into clean, structured data — complete with prices, hours, serial numbers, specs, photos, and **dealer phone numbers** — for equipment valuation, market research, and dealer lead generation.

### ✨ Features

- 🏷️ **Complete Listing Data**: Title, year, manufacturer, model, category, condition, price, hours, serial number, full description, and specs.
- 📞 **Dealer Contact Details**: Dealer name, contact person, phone number (formatted and international), website, and location — on every listing.
- 📍 **Precise Location Data**: City, state, ZIP code, country, and GPS coordinates for mapping and territory analysis.
- 📸 **Photos Included**: Listing images straight from the marketplace, with the full gallery available in detail mode.
- 🔍 **Flexible Targeting**: Scrape any search or category page — filter by manufacturer, model, year, price, or location right on the website and paste the URL in.
- 📋 **Optional Full Details**: Enrich each listing with the seller's **street address**, the complete photo gallery, and the full spec sheet.
- ⚡ **Fast & Efficient**: Collects 28 listings per request — thousands of items in a couple of minutes, no proxy required.

### 🛠️ How It Works

1. **Find your equipment on TractorHouse** – browse to a category (e.g. John Deere tractors) or apply any filters you like, then copy the address of the results page.
2. **Paste it into Start URLs** – add as many result pages as you need, or just type a keyword like `round baler` in the search field instead.
3. **Set the max items** – control exactly how many listings you want to collect.
4. **Optionally enable full details** – adds street addresses, all photos, and the complete spec sheet.
5. **Run the scraper** – receive clean, structured JSON instantly. Download it as JSON, CSV, Excel, or HTML, or pull it straight from the API.

### ⚙️ Input

```json
{
    "startUrls": [{ "url": "https://www.tractorhouse.com/listings/for-sale/john-deere/tractors/1100" }],
    "search": "round baler",
    "maxItems": 50,
    "scrapeDetails": false
}
````

| Field                | Description                                                                                                                         |
| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| `startUrls`          | TractorHouse search or category pages to scrape. All filters in the URL (manufacturer, model, year, location, price) are respected. |
| `search`             | Optional keyword to search for, e.g. `john deere 4440`. Scraped in addition to any start URLs.                                      |
| `maxItems`           | Maximum number of listings to scrape (default `50`).                                                                                |
| `scrapeDetails`      | Visit each listing page to add the street address, full photo gallery, and complete spec sheet (slower, costs more).                |
| `proxyConfiguration` | Optional proxy settings. Not needed for this site — leave it off for the fastest, cheapest runs.                                    |

### 📊 Sample Output Data

```json
[
    {
        "url": "https://www.tractorhouse.com/listing/for-sale/233694569/2020-case-ih-8250-combines-harvesters",
        "id": 233694569,
        "title": "2020 CASE IH 8250",
        "year": 2020,
        "manufacturer": "CASE IH",
        "model": "8250",
        "category": "Combines/Harvesters",
        "categoryId": 1112,
        "condition": "Used",
        "price": 339500,
        "priceText": "$339,500",
        "currency": "USD",
        "isAuction": false,
        "listingType": "for sale",
        "serialNumber": "YKG241084",
        "hours": "905",
        "description": "Telematics Full Combine Automation System w/ Auto Feed Rate, 2 Speed Mud Hog, Pro 700 Yield Monitor…",
        "specs": {
            "Hours": "905",
            "Separator Hours": "625",
            "Serial Number": "YKG241084",
            "Stock Number": "261084",
            "Condition": "Used"
        },
        "images": ["https://media.sandhills.com/img.axd?id=11034029674&w=614&h=460"],
        "imageCount": 15,
        "dealerName": "Vetter Equipment - Denison",
        "dealerContact": "Denison Sales",
        "dealerPhone": "(712) 267-5113",
        "dealerPhoneInternational": "+17122675113",
        "dealerWebsite": "https://www.vetterequip.com",
        "dealerLocation": "Denison, Iowa 51442",
        "city": "Denison",
        "state": "Iowa",
        "postalCode": "51442",
        "country": "USA",
        "latitude": 42.019173,
        "longitude": -95.355217,
        "isPrivateSeller": false,
        "updatedAt": "Wednesday, July 15, 2026 09:53 AM"
    }
]
```

With **Scrape full details** enabled, each item additionally includes the seller's street address, the full image gallery, an expanded spec sheet, and a link to all of that dealer's other listings:

```json
{
    "address": "610 14th Ave S",
    "images": ["…15 full-resolution photos…"],
    "specs": { "Year": "2020", "Engine Horsepower": "480 HP", "Header Type": "Corn Head", "Drive": "4WD" },
    "dealerListingsUrl": "https://www.tractorhouse.com/listings/for-sale/vetter-equipment-denison-iowa/farm-equipment"
}
```

### 💰 Pricing

You pay only for what you scrape:

| Event                  | Price           |
| ---------------------- | --------------- |
| Actor start            | $0.005 per run  |
| Listing scraped        | $0.004 per item |
| Listing detail scraped | $0.010 per item |

Scraping 1,000 listings costs about **$4**, or about **$10** with full details. Apify's free tier covers roughly 1,250 listings per month at no cost, so you can try the scraper before spending anything.

### 💡 Use Cases

- 📈 **Equipment valuation** – build price benchmarks by make, model, year, and hours for tractors, combines, and implements.
- 🎯 **Dealer lead generation** – collect dealer names, phone numbers, and locations across every equipment category.
- 🏷️ **Competitive pricing** – monitor how competing dealers price comparable machines in your region.
- 📊 **Market intelligence** – track inventory levels and supply trends for specific manufacturers or categories.
- 🗺️ **Territory analysis** – map available inventory by state, ZIP code, or GPS coordinates.

### ❓ FAQ

**Is it legal to scrape TractorHouse?**
This scraper only collects publicly available data that anyone can see on the website without logging in. As always, review the website's terms of service and consult legal counsel for your specific use case.

**How many listings can I scrape?**
Any single search or category returns up to roughly 10,000 listings. To go beyond that, split your target into narrower slices — by manufacturer, model, year, or location — and pass several start URLs in one run.

**Do I need a proxy?**
No. The scraper works without one, which keeps runs fast and cheap. A proxy option is available if you need requests to originate from a specific country.

**Are auction listings included?**
Yes. Auction lots appear alongside for-sale listings and are marked with `isAuction: true`. Because some of them are hosted on partner auction sites, they are returned with the data from the results page even when full details are enabled.

**Something not working?**
Open an issue in the **Issues** tab of the Actor — we respond quickly and also build custom solutions on request.

Power up your equipment market strategy with the **TractorHouse Listings Scraper** today! 🚜

# Actor input Schema

## `startUrls` (type: `array`):

TractorHouse search or category pages to scrape, e.g. <code>https://www.tractorhouse.com/listings/for-sale/john-deere/tractors/1100</code>. Copy the address of any results page from the website - all of its filters (manufacturer, model, year, location, price) are kept.

## `search` (type: `string`):

Optional keyword to search TractorHouse for, e.g. <code>john deere 4440</code> or <code>round baler</code>. Scraped in addition to any start URLs above.

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

Maximum number of listings to scrape.

## `scrapeDetails` (type: `boolean`):

Visit every listing page to add the seller's street address, the complete photo gallery and the full spec sheet. Slower and more expensive - it costs one extra request per listing.

## `proxyConfiguration` (type: `object`):

Proxy settings used for scraping. This site is scraped without a proxy by default, which is both faster and cheaper - only enable one if you specifically need requests to come from a given country.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.tractorhouse.com/listings/for-sale/john-deere/tractors/1100"
    }
  ],
  "maxItems": 50,
  "scrapeDetails": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# 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 = {
    "startUrls": [
        {
            "url": "https://www.tractorhouse.com/listings/for-sale/john-deere/tractors/1100"
        }
    ],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("piotrv1001/tractorhouse-listings-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 = {
    "startUrls": [{ "url": "https://www.tractorhouse.com/listings/for-sale/john-deere/tractors/1100" }],
    "proxyConfiguration": { "useApifyProxy": False },
}

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

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

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

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://www.tractorhouse.com/listings/for-sale/john-deere/tractors/1100"
    }
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call piotrv1001/tractorhouse-listings-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=piotrv1001/tractorhouse-listings-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "TractorHouse Listings Scraper",
        "description": "Scrapes farm and heavy equipment listings from TractorHouse.com with prices, specs, hours, photos and dealer contact details.",
        "version": "0.0",
        "x-build-id": "jx6H41dBJUaHaklPb"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/piotrv1001~tractorhouse-listings-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-piotrv1001-tractorhouse-listings-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/piotrv1001~tractorhouse-listings-scraper/runs": {
            "post": {
                "operationId": "runs-sync-piotrv1001-tractorhouse-listings-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/piotrv1001~tractorhouse-listings-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-piotrv1001-tractorhouse-listings-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "TractorHouse search or category pages to scrape, e.g. <code>https://www.tractorhouse.com/listings/for-sale/john-deere/tractors/1100</code>. Copy the address of any results page from the website - all of its filters (manufacturer, model, year, location, price) are kept.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "search": {
                        "title": "Search keyword",
                        "type": "string",
                        "description": "Optional keyword to search TractorHouse for, e.g. <code>john deere 4440</code> or <code>round baler</code>. Scraped in addition to any start URLs above."
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of listings to scrape.",
                        "default": 50
                    },
                    "scrapeDetails": {
                        "title": "Scrape full details",
                        "type": "boolean",
                        "description": "Visit every listing page to add the seller's street address, the complete photo gallery and the full spec sheet. Slower and more expensive - it costs one extra request per listing.",
                        "default": false
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Proxy settings used for scraping. This site is scraped without a proxy by default, which is both faster and cheaper - only enable one if you specifically need requests to come from a given country.",
                        "default": {
                            "useApifyProxy": false
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
