# eBay Motors Scraper (`epicscrapers/ebay-motors-scraper`) Actor

Scrape eBay Motors vehicles and parts: price, year, make, model, trim, mileage, VIN, title status, seller, location, part numbers and fitment. Active or sold listings on ebay.com, .co.uk, .de, .com.au and .ca. No login. Export to JSON, CSV or Excel.

- **URL**: https://apify.com/epicscrapers/ebay-motors-scraper.md
- **Developed by:** [Epic Scrapers](https://apify.com/epicscrapers) (community)
- **Categories:** E-commerce, Automation, AI
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.40 / 1,000 listing saveds

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?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### eBay Motors Scraper: vehicle and parts listings with year, make, model, mileage, VIN, title status and fitment

eBay Motors Scraper turns any eBay Motors search into a spreadsheet of cars, trucks, motorcycles, boats or parts. It works for dealers watching inventory and prices, vehicle-pricing tools, and parts resellers. Each vehicle row has the price, buying format, year, make, mileage, title status, transmission, drive type, seller and location. With details on, you also get the VIN, model, trim, engine, colors, the vehicle history summary and all photos. Parts rows have brand, part numbers, condition, shipping, quantity sold and the fitment the listing states.

- **Two modes.** **Vehicles** (cars & trucks, motorcycles, powersports, boats, trailers, other vehicles) or **parts & accessories**. Each mode gets its own fields and its own table view.
- **Vehicle data in columns.** `year`, `make`, `model`, `trim`, `mileage`, `vin`, `titleStatus` (clean, salvage, rebuilt...), `engine`, `transmission`, `drivetrain` and colors. eBay's item specifics are mapped to fixed columns, so you don't have to parse titles.
- **Active or sold.** Collect live listings, or sold listings with `soldAt` and `soldPrice` for price comparisons.
- **Filters you need.** Make, model, year range, price, max mileage, condition, auction or Buy It Now, ZIP code and radius, sort order, or any eBay category ID. You can also paste an eBay search URL with your own filters.
- **Five eBay sites.** ebay.com (full eBay Motors), ebay.co.uk, ebay.de, ebay.com.au and ebay.ca (cars and parts).
- **Pay per listing, no subscription.** No eBay account, API key or proxy setup needed. Export to JSON, CSV, Excel or Google Sheets.

**Scope:** This actor searches eBay Motors (vehicles and parts & accessories). For other eBay categories, use a general eBay search or sold-listings actor.

### What can you do with eBay Motors Scraper?

| Goal                               | How                                                                                                                            |
| ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| Price a used vehicle               | Search the make, model and year range in sold mode and compare `soldPrice` by `mileage`, `trim` and `titleStatus`.             |
| Watch dealer inventory             | Schedule a daily search and compare `listingId`s and prices between runs.                                                      |
| Find underpriced vehicles          | Search active listings with a max price and max mileage, sorted by lowest price, and check `titleStatus` and `vehicleHistory`. |
| Track auctions                     | Filter by auction and read `bidCount`, `currentBid`, `reserveStatus` and `auctionEndsAt`.                                      |
| Research parts demand              | Search a part and sort by `quantitySold` to see which listings sell.                                                           |
| Match part numbers                 | Collect `mpn`, `oemPartNumbers` and `interchangePartNumbers` for a part type across sellers.                                   |
| Feed a pricing tool or a dashboard | Call the actor through the API and load the dataset into your database or BI tool.                                             |

### How it compares

| What you need             | eBay Motors Scraper                                                 | Generic eBay scrapers                  | Manual research on ebay.com |
| ------------------------- | ------------------------------------------------------------------- | -------------------------------------- | --------------------------- |
| Vehicle fields as columns | Year, make, model, trim, mileage, VIN, title status, engine, colors | Usually title and price, or a raw list | Read each listing           |
| Parts fields              | Brand, MPN, OEM and interchange numbers, stated fitment             | Varies                                 | Read each listing           |
| Sold prices               | Yes, `soldAt` and `soldPrice`                                       | Varies                                 | Yes, one search at a time   |
| Filters                   | Make, model, years, price, mileage, condition, format, ZIP + radius | Mostly keyword and price               | Yes                         |
| Run summary               | eBay's result count, saved, filtered and stop reason per search     | Rarely                                 | No                          |
| Price                     | Pay per listing                                                     | Pay per listing or monthly             | Your time                   |

### Quick start

1. Click **Try for free** and sign in to Apify.
2. Keep **Mode** on **Vehicles** and enter a search such as `toyota tacoma` in **Search keywords**.
3. Optional: set **Year from** `2015` and **Year to** `2020`.
4. For a first run, set **Max results per search** to `20`.
5. Click **Start**. When the run finishes, open the **Output** tab and export the data.

```json
{
    "mode": "vehicles",
    "queries": ["toyota tacoma"],
    "yearFrom": 2015,
    "yearTo": 2020,
    "maxItems": 20
}
```

### What data can you extract?

Every row is one listing. These fields come from the search results:

| Group   | Fields                                                                                                                                                                    |
| ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Listing | `listingId`, `title`, `url`, `image`, `price`, `currency`, `priceText`, `originalPrice`, `condition`, `location`, `sponsored`                                             |
| Buying  | `listingType` (`auction`, `auction_with_buy_it_now`, `buy_it_now`, `classified`), `bidCount`, `auctionEndsAt`, `buyItNowAvailable`, `buyItNowPrice`, `bestOfferAvailable` |
| Vehicle | `year`, `make`, `mileage`, `mileageUnit`, `titleStatus`, `transmission`, `drivetrain` (as shown on the search card; not every listing has all of them)                    |
| Parts   | `brand`, `shippingCost`, `shippingText`, `quantitySold`                                                                                                                   |
| Seller  | `seller.username`, `seller.feedbackScore`, `seller.feedbackPercent`, `seller.isBusiness` (eBay Store sellers)                                                             |
| Sold    | `soldAt`, `soldPrice`, `soldDateText` (sold mode only)                                                                                                                    |
| Search  | `query`, `marketplace`, `mode`, `listingStatus`, `searchRank`, `scrapedAt`                                                                                                |

With **Include listing details** on, each row also has:

| Group   | Fields                                                                                                                                                                           |
| ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Vehicle | `model`, `trim`, `vin`, `bodyType`, `engine`, `cylinders`, `fuelType`, `exteriorColor`, `interiorColor`, `doors`, `previousOwners`, `warranty`, `sellerType` (dealer or private) |
| History | `vehicleHistory` (provider, score, accidents, owners, title check, odometer check, report date) when eBay shows a report, `securePurchase`, `depositRequired`                    |
| Parts   | `mpn`, `oemPartNumbers`, `interchangePartNumbers`, `partType`, `placement`, `fitmentType`, `genuineOem`, `warranty`, `epid`, `quantityAvailable`, `fitment`                      |
| Auction | `currentBid`, `reserveStatus`                                                                                                                                                    |
| Listing | `subtitle`, `images` (all photos), exact `location` (city, region, country), `categoryPath`, `itemSpecifics` (every item specific), `listedAt`, `endsAt`                         |
| Seller  | `seller.displayName`, `seller.isBusiness` (registered business seller), `seller.memberSince`                                                                                     |

### Track eBay Motors over time with scheduled runs

Running the same search again and comparing is where most of the value is. Apify can run the actor for you on a schedule and send the results wherever you need them.

#### 1. Save your input as a task

Open the actor, set your searches and filters, then click **Save as a new task**. A task is a saved input you can run again with one click or on a schedule.

#### 2. Schedule the task

In Apify Console, go to **Schedules**, click **Create new**, choose how often to run, and add your task. See [Schedules](https://docs.apify.com/platform/schedules) and [How to create a schedule](https://help.apify.com/en/articles/7120817-how-to-create-a-schedule).

Common schedules:

| Use case                         | Frequency       | Cron expression |
| -------------------------------- | --------------- | --------------- |
| New listings for a model         | Twice a day     | `0 6,18 * * *`  |
| Dealer inventory and price watch | Daily           | `0 6 * * *`     |
| Sold-price comps                 | Weekly (Monday) | `0 6 * * 1`     |

#### 3. Send the results to a spreadsheet

Connect Google in the task's **Integrations** tab to save every run to Google Sheets or Google Drive automatically.

#### 4. Compare runs

Every row has `listingId` and `scrapedAt`, so runs are easy to join:

- **New listings:** `listingId`s that appear for the first time.
- **Price drops:** `price` per `listingId` over time.
- **Sold or removed:** active `listingId`s that no longer appear.
- **Market price:** median `soldPrice` per `year` and `mileage` band from sold-mode runs.

### Input reference

| Field                 | Type             | Default         | Effect                                                                                                                                                                                                                          |
| --------------------- | ---------------- | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `mode`                | String           | `"vehicles"`    | `"vehicles"` or `"parts"`. Sets the default category and the fields in each row. A URL from a known Motors category keeps its own mode.                                                                                         |
| `queries`             | Array of strings | Empty           | Search keywords, one search per entry. Can be empty when `make` or `model` is set.                                                                                                                                              |
| `startUrls`           | Array of URLs    | Empty           | eBay search (`/sch/`) or category (`/b/`) URLs from the five supported sites. A URL keeps its own site and filters; the filters below don't apply to it.                                                                        |
| `marketplace`         | String           | `"ebay.com"`    | `"ebay.com"`, `"ebay.co.uk"`, `"ebay.de"`, `"ebay.com.au"` or `"ebay.ca"`.                                                                                                                                                      |
| `vehicleType`         | String           | `"cars_trucks"` | `"cars_trucks"`, `"motorcycles"`, `"powersports"`, `"boats"`, `"trailers"` or `"other_vehicles"`. Types other than cars are ebay.com only.                                                                                      |
| `listingStatus`       | String           | `"active"`      | `"active"` or `"sold"`.                                                                                                                                                                                                         |
| `maxItems`            | Integer          | `50`            | Maximum listings saved per search.                                                                                                                                                                                              |
| `includeDetails`      | Boolean          | `false`         | Adds the detail fields above. One extra request per listing, charged as a separate event.                                                                                                                                       |
| `make` / `model`      | String           | Empty           | Added to the search keywords.                                                                                                                                                                                                   |
| `yearFrom` / `yearTo` | Integer          | Empty           | Vehicles: eBay's model-year filter (ebay.com, ebay.co.uk, ebay.ca) plus a check on each row's year. Parts: the same year in both fields is added to the keywords; a range is ignored.                                           |
| `maxMileage`          | Integer          | Empty           | Vehicles: drops rows above this mileage. On ebay.com eBay's mileage filter is also used. Rows without a mileage are kept.                                                                                                       |
| `minPrice`/`maxPrice` | Number           | Empty           | Price range in the site's currency.                                                                                                                                                                                             |
| `condition`           | String           | `"any"`         | `"any"`, `"new"`, `"used"`, `"certified_refurbished"` or `"for_parts"`.                                                                                                                                                         |
| `listingType`         | String           | `"any"`         | `"any"`, `"auction"`, `"buy_it_now"` or `"accepts_offers"`.                                                                                                                                                                     |
| `sortBy`              | String           | `"best_match"`  | `"best_match"`, `"ending_soonest"`, `"newly_listed"`, `"price_low"`, `"price_high"`, `"distance_nearest"`, and for vehicles `"year_newest"`, `"year_oldest"`, `"mileage_lowest"`. Sold searches default to most recently ended. |
| `postalCode`          | String           | Empty           | Search near this ZIP or postal code.                                                                                                                                                                                            |
| `maxDistance`         | Integer          | Empty           | Radius around `postalCode`, in miles (ebay.com, ebay.co.uk) or km.                                                                                                                                                              |
| `categoryId`          | String           | Empty           | Any eBay category ID instead of the default one.                                                                                                                                                                                |
| `proxyConfiguration`  | Object           | Residential     | Apify Proxy settings. The proxy country follows the marketplace unless you set one.                                                                                                                                             |

### Ready-to-run examples

#### Toyota Tacoma 2015–2020 with full vehicle details

```json
{
    "mode": "vehicles",
    "queries": ["toyota tacoma"],
    "yearFrom": 2015,
    "yearTo": 2020,
    "maxMileage": 100000,
    "maxItems": 100,
    "includeDetails": true
}
```

Open the **Vehicles** view and sort by `price` or `mileage`. Check `titleStatus` and `vehicleHistory` before contacting a seller.

#### Sold prices for a model (comps)

```json
{
    "mode": "vehicles",
    "make": "Ford",
    "model": "Mustang",
    "yearFrom": 2018,
    "yearTo": 2022,
    "listingStatus": "sold",
    "maxItems": 200
}
```

#### Auctions near a ZIP code ending soon

```json
{
    "mode": "vehicles",
    "queries": ["pickup truck"],
    "listingType": "auction",
    "postalCode": "75201",
    "maxDistance": 200,
    "sortBy": "ending_soonest",
    "maxItems": 50
}
```

#### Parts for a vehicle, with part numbers

```json
{
    "mode": "parts",
    "queries": ["brake pads"],
    "make": "Toyota",
    "model": "Tacoma",
    "condition": "new",
    "maxItems": 100,
    "includeDetails": true
}
```

Sort by `quantitySold` to see what sells, and compare `mpn` and `oemPartNumbers` across sellers.

#### Motorcycles

```json
{
    "mode": "vehicles",
    "vehicleType": "motorcycles",
    "queries": ["harley davidson softail"],
    "maxItems": 100
}
```

#### Cars in the UK from your own eBay search URL

```json
{
    "startUrls": [{ "url": "https://www.ebay.co.uk/sch/9801/i.html?_nkw=ford+focus&LH_ItemCondition=3000" }],
    "maxItems": 100
}
```

### Analyze the results with ChatGPT or Claude

Export the dataset as CSV (the **Vehicles** or **Parts & accessories** view keeps it small) and attach it to a chat with ChatGPT, Claude or another AI assistant. Some prompts to start with:

**Price a vehicle.** "These are sold eBay listings for one model. Group them by `year` and by `mileage` band (0–50k, 50–100k, 100k+). For each group show the number of sales and the median `soldPrice`. What should a 2018 with 60,000 miles and a clean title sell for?"

**Find deals.** "From these active listings, list the 10 with the lowest `price` relative to similar `year` and `mileage`, excluding salvage or rebuilt `titleStatus`. Explain each pick."

**Parts research.** "Group these parts listings by `brand` and show total `quantitySold` and median `price`. Which brands sell most at which price?"

The actor's dataset is also available through the [Apify API](https://docs.apify.com/api/v2) and integrations such as Make, Zapier and n8n. To run it from your own code, call `epicscrapers/ebay-motors-scraper`:

```bash
curl -X POST "https://api.apify.com/v2/acts/epicscrapers~ebay-motors-scraper/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"mode":"vehicles","queries":["toyota tacoma"],"yearFrom":2015,"yearTo":2020,"maxItems":20}'
```

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

const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('epicscrapers/ebay-motors-scraper').call({
    mode: 'parts',
    queries: ['brake pads'],
    make: 'Toyota',
    model: 'Tacoma',
    maxItems: 50,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
```

### Output

Results go to the run's default dataset. Use the views **Vehicles** or **Parts & accessories**, or export everything as JSON, CSV, Excel, XML or HTML. The key-value store has a `RUN_SUMMARY` record with, for each search, eBay's total result count (`ebayTotalResults`, with eBay's text in `ebayTotalText` and `ebayTotalIsEstimate: true` for counts such as "5,900+ results"), the rows saved (`returned`), rows filtered out (`filteredOut`), `duplicates`, `looseMatchesSkipped`, `detailsRequested` and `detailsFailed`, the `stopReason` and the equivalent eBay `searchUrl`. For sold searches, `ebayTotalResults` counts eBay's whole sold history (about the last 90 days) for your filters.

This is a real row from a `toyota tacoma` 2015–2020 search with details on October 3, 2026, with the photo list and item specifics shortened:

```json
{
    "query": "toyota tacoma",
    "marketplace": "ebay.com",
    "mode": "vehicles",
    "listingStatus": "active",
    "searchRank": 1,
    "listingId": "377530137697",
    "url": "https://www.ebay.com/itm/377530137697",
    "title": "2016 Toyota Tacoma DOUBLE CAB",
    "image": "https://i.ebayimg.com/images/g/c8AAAeSwQ6Jquw8g/s-l1600.jpg",
    "images": ["https://i.ebayimg.com/images/g/c8AAAeSwQ6Jquw8g/s-l1600.jpg", "…"],
    "price": 29990,
    "currency": "USD",
    "listingType": "buy_it_now",
    "buyItNowPrice": 29990,
    "bestOfferAvailable": true,
    "year": 2016,
    "make": "Toyota",
    "model": "Tacoma",
    "trim": "DOUBLE CAB",
    "mileage": 74994,
    "mileageUnit": "mi",
    "vin": "3TMCZ5ANXGM011685",
    "bodyType": "Crew Cab Pickup",
    "engine": "3.5L Gas V6",
    "cylinders": 6,
    "transmission": "Automatic",
    "drivetrain": "4WD",
    "fuelType": "gasoline",
    "exteriorColor": "White",
    "interiorColor": "Gray",
    "doors": 4,
    "titleStatus": "clean",
    "condition": "Pre-Owned",
    "previousOwners": 3,
    "vehicleHistory": {
        "provider": "AutoCheck",
        "score": 97,
        "accidents": "None",
        "owners": 3,
        "titleCheck": "OK",
        "odometerCheck": "OK",
        "reportDate": "October 01, 2026"
    },
    "securePurchase": true,
    "depositRequired": 1000,
    "sellerType": "private",
    "location": "Millers Creek, North Carolina, United States",
    "seller": {
        "username": "creekside-deals",
        "displayName": "creekside deals",
        "feedbackScore": 6196,
        "feedbackPercent": 99.9,
        "isBusiness": true,
        "memberSince": "Aug 2003"
    },
    "categoryPath": ["eBay Motors", "Cars & Trucks", "Toyota", "Tacoma"],
    "itemSpecifics": { "Year": "2016", "Mileage": "74994", "Interior Color": "Gray", "…": "…" },
    "listedAt": "2026-09-29T01:38:40.000Z",
    "endsAt": "2026-10-29T01:38:40.000Z",
    "detailsFetched": true,
    "scrapedAt": "2026-10-03T08:14:33.027Z"
}
```

#### Notes on fields

- Vehicle rows and parts rows have different fields. Fields that need details are `null` (or empty lists) without them.
- `price` is the current price. For auctions it is the current bid. Shipping is separate (`shippingCost`, `0` when free). Vehicles usually show no shipping cost.
- `sellerType` is what the listing states under "For Sale By" (dealer or private). `seller.isBusiness` is eBay's business-seller registration. They can differ.
- `fitment` comes from the listing's own item specifics (Make, Model, Year, Trim, Engine). It is **not** eBay's full compatibility chart, which the app API doesn't provide. Many listings, especially large parts sellers, have no fitment in their item specifics; then `fitment` is `null` and the vehicles are often listed in the title.
- `interchangePartNumbers` and `oemPartNumbers` are what the seller entered. Some sellers put keywords there.
- On ebay.co.uk, eBay adds a Buyer Protection fee to private sellers' prices in search results. With details on, the actor removes it from `price` and reports it in `buyerProtectionFee`; without details `buyerProtectionFee` is `null` and the price may include it. UK vehicles are not affected.
- `soldAt` is the sale date at midnight UTC. eBay shows sold listings for about the last 90 days.
- `searchRank` is the position among the results eBay returned for that search.
- Results after eBay's "Results matching fewer words" line are skipped and counted as `looseMatchesSkipped` in the run summary, because they don't match all keywords or filters.
- The year and mileage filters drop rows only when the year or mileage is known. Rows without them are kept.
- Missing values are `null`. Every row has `scrapedAt` in UTC.

### FAQ

#### Why did I get few or no results?

Use short keywords a buyer would type, such as `toyota tacoma`, not a full listing title. Narrow filters (year range, mileage, ZIP radius) reduce results. If eBay has no matches, the run succeeds with 0 rows and says so in the log and status message. The `RUN_SUMMARY` record shows eBay's own result count for each search.

#### What happens if eBay blocks the scraper?

The actor retries with a new proxy session. If a search still fails, the run ends as **Failed** with the reason, and listings already collected stay in the dataset. A blocked search is never reported as "no results".

#### How many results can I get?

eBay shows at most about 10,000 results per search. Use several narrower searches (by year range or price range) for more.

#### How fast is it?

A search page of 120 listings takes a few seconds. Details add one request per listing, five at a time. In our tests, 3 vehicles with details took under 10 seconds.

#### Which eBay sites work?

ebay.com covers every eBay Motors category. ebay.co.uk, ebay.de and ebay.com.au work for cars and parts; ebay.ca works for cars and parts, but has few vehicle listings. On ebay.de item specifics are in German and often sparse. eBay's model-year filter is used on ebay.com, ebay.co.uk and ebay.ca; on ebay.de and ebay.com.au years are checked in each row only.

#### Do I need proxies, an eBay account or an API key?

No. The actor uses Apify's residential proxies and doesn't log in.

#### Does it collect personal data?

Rows contain what every eBay visitor sees on the listing: the seller's username, feedback and the item location. The actor doesn't collect phone numbers, emails or buyer data. Some sellers put a phone number in the listing title; that text is part of the title as eBay shows it.

#### Is it legal to scrape eBay?

The actor collects publicly visible listing data. You are responsible for how you use it, including eBay's terms and laws such as GDPR and CCPA. Use the data responsibly, for example for market research and pricing, and don't use it to spam sellers.

### Cost

This actor uses pay-per-event pricing. You pay only for listings saved, with no subscription and no start fee:

| Event                  | Charged when                                         |
| ---------------------- | ---------------------------------------------------- |
| `listing`              | A listing is saved without details.                  |
| `listing-with-details` | A listing is saved with details (one event per row). |

On the free plan a listing costs $2 per 1,000 and a listing with details $3 per 1,000; higher Apify plans pay less (down to $1.40 and $2.10 on Gold). Platform usage and proxy are included.

If a detail request fails, the row is saved without details and charged as `listing`. Rows that are filtered out, duplicates and loose matches are not charged. The **Pricing** tab shows the current prices. Set a maximum cost per run; the actor stops cleanly when it is reached.

### Support

Report problems or request features in the **Issues** tab. Include the run ID, the input and what you expected. We read every issue.

This actor is not affiliated with, endorsed by or sponsored by eBay Inc. "eBay" and "eBay Motors" are trademarks of eBay Inc. AutoCheck is a trademark of its owner.

# Actor input Schema

## `mode` (type: `string`):

Vehicles (cars, trucks, motorcycles, boats...) or parts & accessories. Sets the default eBay category and the fields in each row. For search URLs from a known Motors category, the mode follows the URL's category.

## `queries` (type: `array`):

What a buyer would type in eBay's search box, one search per entry, for example `toyota tacoma` or `f150 headlight`. Leave empty to search by make and model only.

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

Search (`/sch/...`) or category (`/b/...`) URLs from ebay.com, ebay.co.uk, ebay.de, ebay.com.au or ebay.ca. Set filters on eBay, copy the URL and paste it here. A URL keeps its own marketplace and filters; the filter settings below apply only to keywords.

## `marketplace` (type: `string`):

eBay site for keyword searches. Prices are in the site's currency. ebay.com has the full eBay Motors catalog; other sites cover cars and parts only.

## `vehicleType` (type: `string`):

Vehicle category in vehicles mode. Motorcycles, powersports, boats, trailers and other vehicles are available on ebay.com only; other sites use cars.

## `listingStatus` (type: `string`):

Active listings for sale now, or sold listings from roughly the last 90 days (eBay's completed-sales filter). Sold rows add `soldAt` and `soldPrice`.

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

Maximum listings saved for each keyword or URL. eBay shows at most about 10,000 results per search.

## `includeDetails` (type: `boolean`):

Opens each listing for the full data: VIN, model, trim, engine, colors, title status, all photos, seller type, vehicle history, part numbers and fitment. One extra request per listing, charged as a separate event. Off: search-card data only (price, year, make, mileage, title status, transmission, drive type, seller, location).

## `make` (type: `string`):

Vehicle make, for example `Toyota`. Added to the search keywords, so it also works for parts (`brake pads` + `Toyota`).

## `model` (type: `string`):

Vehicle model, for example `Tacoma`. Added to the search keywords.

## `yearFrom` (type: `integer`):

Oldest model year. Vehicles: eBay's model-year filter on ebay.com, ebay.co.uk and ebay.ca, and a check on the year in each listing everywhere. Parts: set Year from and Year to to the same year to add it to the keywords.

## `yearTo` (type: `integer`):

Newest model year.

## `maxMileage` (type: `integer`):

Vehicles only. Drops listings whose mileage is above this number (in the listing's unit: miles on ebay.com and ebay.co.uk, usually km elsewhere). Listings that don't state mileage are kept.

## `minPrice` (type: `number`):

Minimum price in the marketplace's currency.

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

Maximum price in the marketplace's currency.

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

eBay's condition filter. Certified / refurbished means certified pre-owned for vehicles and remanufactured or seller-refurbished for parts.

## `listingType` (type: `string`):

Only auctions, only Buy It Now, or only listings that accept offers.

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

eBay's sort order. Year and mileage sorts work in vehicles mode only. Sold searches default to most recently ended.

## `postalCode` (type: `string`):

Search near this ZIP or postal code of the selected marketplace, for example `10001`. Combine with Max distance.

## `maxDistance` (type: `integer`):

Only listings within this distance of the ZIP / postal code, in miles on ebay.com and ebay.co.uk and km elsewhere. eBay offers 10, 25, 50, 75, 100, 150, 200, 500 and more.

## `categoryId` (type: `string`):

Overrides the default category, for example `6038` (Other Vehicles & Trailers) or `33637` (Headlights). The ID is the number after `_sacat=` in an eBay URL.

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

eBay limits traffic from data centers. Residential proxies are recommended; the proxy country follows the marketplace unless you choose one.

## Actor input object example

```json
{
  "mode": "vehicles",
  "queries": [
    "toyota tacoma"
  ],
  "marketplace": "ebay.com",
  "vehicleType": "cars_trucks",
  "listingStatus": "active",
  "maxItems": 20,
  "includeDetails": false,
  "condition": "any",
  "listingType": "any",
  "sortBy": "best_match",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `vehicles` (type: `string`):

No description

## `parts` (type: `string`):

No description

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

No description

## `runSummary` (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 = {
    "queries": [
        "toyota tacoma"
    ],
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("epicscrapers/ebay-motors-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 = {
    "queries": ["toyota tacoma"],
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("epicscrapers/ebay-motors-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 '{
  "queries": [
    "toyota tacoma"
  ],
  "maxItems": 20
}' |
apify call epicscrapers/ebay-motors-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,epicscrapers/ebay-motors-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/cug3rqVmk2Z00Xhjw/builds/P2EnGYkbXZJdDDhQp/openapi.json
