# IAA Scraper - Salvage Vehicle Auctions (`lulzasaur/iaa-scraper`) Actor

Scrape salvage vehicle auction listings from IAA (iaai.com). Extract VIN, year, make, model, damage type, odometer, engine, transmission, sale date, location, keys status, images, and more. Perfect for auto parts dealers, rebuilders, and vehicle research.

- **URL**: https://apify.com/lulzasaur/iaa-scraper.md
- **Developed by:** [lulz bot](https://apify.com/lulzasaur) (community)
- **Categories:** E-commerce
- **Features:** Limited permissions
- **Stats:** 18 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 results

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/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

## IAA Scraper - Salvage Vehicle Auctions

Scrape salvage and insurance vehicle auction listings from **IAA** (iaai.com), one of the largest salvage vehicle auction marketplaces in North America (a Ritchie Bros company).

### What data does it extract?

For each vehicle listing, the scraper extracts:

| Field | Description |
|-------|-------------|
| `title` | Full vehicle title (e.g., "2011 TOYOTA PRIUS TWO") |
| `year` | Model year |
| `make` | Vehicle make (e.g., Toyota, Ford) |
| `model` | Vehicle model (e.g., Prius, F-150) |
| `series` | Vehicle series/trim (e.g., TWO, XLE) |
| `vin` | VIN number (partially masked for non-authenticated users) |
| `stockNumber` | IAA stock number |
| `salvageId` | IAA salvage ID |
| `primaryDamage` | Primary damage description |
| `secondaryDamage` | Secondary damage description |
| `titleDoc` | Title/sale document status |
| `startCode` | Engine start code (Run & Drive, Starts, Stationary) |
| `keys` | Key availability (Present, Missing) |
| `odometer` | Odometer reading with status |
| `airbags` | Airbag deployment status |
| `vehicleType` | Vehicle type (Automobile, Truck, etc.) |
| `bodyStyle` | Body style (Sedan, SUV, Hatchback, etc.) |
| `engine` | Engine description |
| `transmission` | Transmission type |
| `driveLineType` | Drive type (FWD, RWD, AWD, 4WD) |
| `fuelType` | Fuel type |
| `cylinders` | Number of cylinders |
| `exteriorColor` | Exterior color |
| `interiorColor` | Interior color |
| `options` | Vehicle options |
| `manufacturedIn` | Country of manufacture |
| `vehicleClass` | Vehicle classification |
| `location` | Selling branch location |
| `vehicleLocation` | Physical vehicle location |
| `saleDate` | Auction date and time |
| `laneRun` | Lane and run number |
| `seller` | Seller name |
| `buyNowPrice` | Buy Now price (if available) |
| `imageUrl` | Primary image URL |
| `images` | Array of all image URLs |
| `url` | Direct link to the vehicle detail page |
| `scrapedAt` | Timestamp of when the data was scraped |

### Input parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `keyword` | string | `"toyota"` | Search keyword for vehicles |
| `vehicleType` | string | `""` | Vehicle type filter (Cars, SUVs, Trucks, etc.) |
| `maxResults` | integer | `100` | Maximum listings to scrape (max 1000) |
| `scrapeDetails` | boolean | `true` | Scrape full detail pages for complete specs |
| `proxyConfiguration` | object | `{}` | Proxy settings |

### Vehicle type options

- All Types (default)
- Cars
- SUVs
- Pickup Trucks
- Motorcycles
- Heavy Trucks
- Electric Vehicles
- Buses
- RVs
- Trailers
- Rental Vehicles

### Example output

```json
{
    "title": "2011 TOYOTA PRIUS TWO",
    "year": 2011,
    "make": "TOYOTA",
    "model": "PRIUS",
    "series": "TWO",
    "vin": "JTDKN3DU2B0****** (OK)",
    "stockNumber": "44964456",
    "salvageId": "45461877~US",
    "primaryDamage": "Normal Wear & Tear",
    "secondaryDamage": "Front End",
    "titleDoc": "CLEAR (Florida)",
    "startCode": "Stationary",
    "keys": "Present",
    "odometer": "117,821 mi (Actual)",
    "airbags": "Deployed",
    "vehicleType": "Automobile",
    "bodyStyle": "HATCHBACK",
    "engine": "1.8L I-4 DOHC, VVT, 98HP",
    "transmission": "Automatic Transmission",
    "driveLineType": "Front Wheel Drive",
    "fuelType": "Other",
    "cylinders": "4 Cylinders",
    "exteriorColor": "Gold",
    "interiorColor": "Unknown",
    "location": "Clearwater (FL)",
    "saleDate": "Apr 27, 2026",
    "imageUrl": "https://vis.iaai.com/resizer?imageKeys=...",
    "url": "https://www.iaai.com/VehicleDetail/45461877~US",
    "scrapedAt": "2026-04-25T07:00:00.000Z"
}
```

### Use cases

- **Auto parts dealers**: Find specific vehicle parts and inventory
- **Vehicle rebuilders**: Locate repairable vehicles for rebuilding
- **Price research**: Track salvage vehicle pricing trends
- **Insurance research**: Analyze damage patterns and total loss trends
- **Export buyers**: Find vehicles for international resale
- **Data analysis**: Build datasets for automotive market research

### How it works

1. Searches IAA by keyword and optional vehicle type filter
2. Extracts vehicle IDs from the server-rendered search results
3. Scrapes individual vehicle detail pages for comprehensive specs
4. Handles pagination automatically for large result sets

### Cost estimation

With the default 100 results at ~$0.005 per result via Pay-Per-Event pricing:

- 100 results = ~$0.50
- 500 results = ~$2.50
- 1,000 results = ~$5.00

### Notes

- VIN numbers are partially masked by IAA for non-authenticated users
- Sale dates and availability change frequently as auctions complete
- Image URLs are served from IAA's CDN and may expire over time
- The scraper respects IAA's server with rate limiting between requests

# Actor input Schema

## `keyword` (type: `string`):

Search term for vehicles (e.g., 'toyota', 'ford f150', 'tesla model 3')

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

Filter by vehicle type category

## `maxResults` (type: `integer`):

Maximum number of vehicle listings to scrape (max 1000)

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

Scrape individual vehicle detail pages for full specs (slower but more data including VIN, engine, transmission, etc.)

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

Proxy settings to avoid rate limiting

## Actor input object example

```json
{
  "keyword": "toyota",
  "vehicleType": "",
  "maxResults": 100,
  "scrapeDetails": true,
  "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 = {
    "keyword": "toyota"
};

// Run the Actor and wait for it to finish
const run = await client.actor("lulzasaur/iaa-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 = { "keyword": "toyota" }

# Run the Actor and wait for it to finish
run = client.actor("lulzasaur/iaa-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 '{
  "keyword": "toyota"
}' |
apify call lulzasaur/iaa-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,lulzasaur/iaa-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/MFDKnfBEvBHtNaGJm/builds/PEfFkWJLeiCanPP43/openapi.json
