# Trailer Trader Scraper (`crawlerbros/truckpaper-scraper`) Actor

Scrape Trailer Trader - a free U.S. trailer marketplace with 100,000s of new and used listings. Browse by category, get price, brand, condition, seller, and photos.

- **URL**: https://apify.com/crawlerbros/truckpaper-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** Automation, E-commerce, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

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

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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

## Trailer Trader Scraper

Scrape **Trailer Trader** (trailertrader.com) — a free U.S. marketplace with 100,000s of new and used trailer listings, from cargo/enclosed and utility trailers to horse trailers, dump trailers, and toy haulers. Browse by category and get title, price, brand, condition, seller, and photos. No login, no API key required.

### Data Source & Usage Notes

**Read this before running a large job.**

- **No login required.** Trailer Trader's category pages are server-rendered and embed every listing directly in the page's own schema.org structured data — no login, cookies, or API key needed.
- **Conservative by design.** The actor only ever uses Apify's free datacenter (AUTO) proxy group — never a paid residential proxy.
- **Not affiliated with Trailer Trader.** This is an independent third-party tool using the source's own public, no-login category pages.

#### Why Trailer Trader instead of TruckPaper?

This actor was originally scoped as a TruckPaper.com (truckpaper.com, Sandhills Global) commercial truck/trailer marketplace. Live verification (including from Apify's own cloud infrastructure, with stealth Playwright, session rotation, and a circuit breaker already in place) showed truckpaper.com's Cloudflare protection hard-blocks Apify's datacenter ASN specifically — every request, from every tested account and proxy session, returned "Access denied | Cloudflare". Per this project's zero-cost reliability policy, the target was replaced with Trailer Trader — a comparable free, no-login U.S. trailer marketplace, confirmed live and returning real structured listing data from Apify's cloud infrastructure.

### What this actor does

- **22 curated categories** covering the site's full taxonomy (enclosed/cargo, utility, horse & livestock, dump, gooseneck variants, toy haulers, and more), or type a custom category slug
- **Sort by** relevance (the site's own order), price low-to-high, or price high-to-low
- **Condition filter** (any / new / used)
- **Max price filter**
- **Model year filter** (min/max, parsed from each listing's title)
- **Every field the site publishes in its own structured listing data** — title, price, brand, category, condition, seller, description, and photo
- **Empty fields are omitted**

### Output per listing

- `listingId`, `title`, `sourceUrl` — canonical Trailer Trader listing URL
- `category` — the specific trailer type/category
- `brand` — manufacturer, when listed
- `condition` — `New` or `Used`
- `year` — model year, parsed from the listing title, when present
- `price`, `currency`
- `availability` — e.g. `InStock`, when Trailer Trader publishes it
- `sellerName`
- `description`
- `imageUrl`
- `searchCategory` — the category browsed to find this result
- `country` (always `"United States"`)
- `recordType: "listing"`, `scrapedAt`

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `category` | string | `enclosed-trailers-for-sale` | One of 22 curated categories |
| `customCategory` | string | – | Exact category slug not in the curated list |
| `sortBy` | string | `relevance` | `relevance` / `priceLowToHigh` / `priceHighToLow` |
| `condition` | string | `any` | `any` / `new` / `used` |
| `maxPrice` | number | – | Only return listings at or below this price |
| `minYear` | integer | – | Only return listings with model year at or above this value |
| `maxYear` | integer | – | Only return listings with model year at or below this value |
| `maxItems` | int | `20` | Hard cap (1–1000) |

#### Example: browse a category

```json
{
  "category": "utility-trailers-for-sale",
  "maxItems": 30
}
````

#### Example: browse a category, cheapest first

```json
{
  "category": "dump-trailers-for-sale",
  "sortBy": "priceLowToHigh",
  "maxItems": 20
}
```

#### Example: filter by condition

```json
{
  "category": "enclosed-trailers-for-sale",
  "condition": "used",
  "maxItems": 20
}
```

#### Example: filter by max price

```json
{
  "category": "enclosed-trailers-for-sale",
  "maxPrice": 8000,
  "maxItems": 20
}
```

#### Example: filter by model year range

```json
{
  "category": "enclosed-trailers-for-sale",
  "minYear": 2024,
  "maxYear": 2026,
  "maxItems": 20
}
```

### Use cases

- **Market research** — survey pricing and availability for a trailer type
- **Price monitoring** — track listing prices over time
- **Lead generation** — build a list of sellers/dealers active in a category
- **Inventory comparison** — compare new vs. used pricing for the same trailer type

### FAQ

**What's the data source?** Trailer Trader's own free public trailer marketplace at `trailertrader.com`. This actor is an independent third-party tool and is not affiliated with Trailer Trader.

**Why did my run return 0 results?** The category genuinely has no listings (rare), or — if using `customCategory` — the slug you typed doesn't exist on the site. **Note:** an invalid category slug does not error; the site silently falls back to its generic "All Trailers" page instead. Stick to the curated `category` dropdown to avoid this, or double-check a custom slug against the site's own category menu first.

**How fresh is the data?** Real-time — the search reflects the marketplace's live listings as of the moment of the search.

# Actor input Schema

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

Trailer category to browse. Pick one of the curated categories, or choose 'Custom category' and type the exact category slug below.

## `customCategory` (type: `string`):

Exact category slug not in the curated list above, as it appears in the site's own category URL (e.g. 'atv-trailers-for-sale'). Takes priority over 'Category' when set. Warning: an invalid/mistyped slug does NOT error -- the site silently falls back to its generic 'All Trailers' listing instead, so double-check the slug against the site's own category menu if using this field.

## `sortBy` (type: `string`):

How to order results. The site itself only returns its own listing order, so price sorting is applied client-side across the fetched batch.

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

Only return listings of this condition, as published on each listing's own page. Leave as 'Any' for no filter.

## `maxPrice` (type: `number`):

Only return listings at or below this price (USD). Leave blank for no limit.

## `minYear` (type: `integer`):

Only return listings with a model year at or above this value (parsed from the listing title, e.g. '2024 Triton ...'). Leave blank for no limit.

## `maxYear` (type: `integer`):

Only return listings with a model year at or below this value (parsed from the listing title). Leave blank for no limit.

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

Hard cap on the number of listings to return.

## Actor input object example

```json
{
  "category": "enclosed-trailers-for-sale",
  "sortBy": "relevance",
  "condition": "any",
  "maxItems": 20
}
```

# Actor output Schema

## `listings` (type: `string`):

Dataset containing all scraped Trailer Trader listings.

# 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 = {
    "category": "enclosed-trailers-for-sale",
    "sortBy": "relevance",
    "condition": "any",
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/truckpaper-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 = {
    "category": "enclosed-trailers-for-sale",
    "sortBy": "relevance",
    "condition": "any",
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/truckpaper-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 '{
  "category": "enclosed-trailers-for-sale",
  "sortBy": "relevance",
  "condition": "any",
  "maxItems": 20
}' |
apify call crawlerbros/truckpaper-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Trailer Trader Scraper",
        "description": "Scrape Trailer Trader - a free U.S. trailer marketplace with 100,000s of new and used listings. Browse by category, get price, brand, condition, seller, and photos.",
        "version": "1.0",
        "x-build-id": "iHZoXFlletGTpVcdY"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/crawlerbros~truckpaper-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-crawlerbros-truckpaper-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/crawlerbros~truckpaper-scraper/runs": {
            "post": {
                "operationId": "runs-sync-crawlerbros-truckpaper-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/crawlerbros~truckpaper-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-crawlerbros-truckpaper-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",
                "required": [
                    "category"
                ],
                "properties": {
                    "category": {
                        "title": "Category",
                        "enum": [
                            "custom",
                            "trailers-for-sale",
                            "horse-and-livestock-trailers-for-sale",
                            "all-travel-trailers-for-sale",
                            "semi-trailers-for-sale",
                            "truck-beds-for-sale",
                            "gooseneck-flatbed-trailers-for-sale",
                            "gooseneck-enclosed-trailers-for-sale",
                            "enclosed-trailers-for-sale",
                            "gooseneck-horse-trailers-for-sale",
                            "all-used-trailers-for-sale",
                            "bumper-horse-trailers-for-sale",
                            "utility-trailers-for-sale",
                            "dump-trailers-for-sale",
                            "snowmobile-trailers-for-sale",
                            "bumper-enclosed-trailers-for-sale",
                            "travel-trailers-for-sale",
                            "gooseneck-racing-trailers-for-sale",
                            "bumper-flatbed-trailers-for-sale",
                            "gooseneck-toy-haulers-for-sale",
                            "bumper-dump-trailers-for-sale",
                            "toy-haulers-for-sale",
                            "new-trailers-for-sale"
                        ],
                        "type": "string",
                        "description": "Trailer category to browse. Pick one of the curated categories, or choose 'Custom category' and type the exact category slug below.",
                        "default": "enclosed-trailers-for-sale"
                    },
                    "customCategory": {
                        "title": "Custom category slug (overrides selection above)",
                        "type": "string",
                        "description": "Exact category slug not in the curated list above, as it appears in the site's own category URL (e.g. 'atv-trailers-for-sale'). Takes priority over 'Category' when set. Warning: an invalid/mistyped slug does NOT error -- the site silently falls back to its generic 'All Trailers' listing instead, so double-check the slug against the site's own category menu if using this field."
                    },
                    "sortBy": {
                        "title": "Sort order",
                        "enum": [
                            "relevance",
                            "priceLowToHigh",
                            "priceHighToLow"
                        ],
                        "type": "string",
                        "description": "How to order results. The site itself only returns its own listing order, so price sorting is applied client-side across the fetched batch.",
                        "default": "relevance"
                    },
                    "condition": {
                        "title": "Condition",
                        "enum": [
                            "any",
                            "new",
                            "used"
                        ],
                        "type": "string",
                        "description": "Only return listings of this condition, as published on each listing's own page. Leave as 'Any' for no filter.",
                        "default": "any"
                    },
                    "maxPrice": {
                        "title": "Max price",
                        "type": "number",
                        "description": "Only return listings at or below this price (USD). Leave blank for no limit."
                    },
                    "minYear": {
                        "title": "Min model year",
                        "minimum": 1900,
                        "maximum": 2100,
                        "type": "integer",
                        "description": "Only return listings with a model year at or above this value (parsed from the listing title, e.g. '2024 Triton ...'). Leave blank for no limit."
                    },
                    "maxYear": {
                        "title": "Max model year",
                        "minimum": 1900,
                        "maximum": 2100,
                        "type": "integer",
                        "description": "Only return listings with a model year at or below this value (parsed from the listing title). Leave blank for no limit."
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Hard cap on the number of listings to return.",
                        "default": 20
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
