Looking for the overview — what this API returns, what it costs, and a call you can run without a key? See the IAAI API page →
E-commerce & Marketplaces

IAAI API & Scraper

IAAI is the second of the two big US salvage houses, and this API is the matching half of our Copart API — the same field names for the same things, so a lot from either house lands in the same table.

5 actionsLive JSON1,000 free credits$0.67–$1.50 / 1,000 creditsMCP-ready
Get a free keyOpen in playground

🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.

A search returns 358,763 live lots filtered by 25 attributes, and a lot record carries the masked VIN, primary and secondary damage, the title document and its issuing state, the odometer with its ACTUAL or NOT-ACTUAL brand, the actual cash value, the buy-now price where there is one, the auction date, the branch with its coordinates, and every auction photograph at full resolution. One thing it does not carry: IAAI does not publish the current high bid to anyone who is not signed in as a buyer, so that field is null on every lot and we do not guess at it.

Reference

The five fields that decide whether a salvage lot is worth bidding on

Salvage buying turns on a handful of fields, and on IAAI several of them are free text rather than the enum they look like. The counts come from a live sample of 25 lots in each of seven categories plus targeted filter runs, so you can see how often each field actually arrives rather than only that it exists.

FieldWhat comes backWhat it means
title_typeThe issuing state's own document name — CLEAR (Pennsylvania), SALVAGE, NON-REPAIRABLE, PartsOnly, Repairable, Bill Of Sale, NoneThe search filter accepts seven tokens, but the value returned is the state's wording with the state in brackets. Filter on the token, group on it, but never parse it as an enum.
odometer / odometer_brandAn integer in miles plus ACTUAL, NOT ACTUAL or EXEMPT. Present on 25 of 25 cars and SUVs, 24 of 25 motorcycles and heavy trucks, but only 7 of 25 trailers and 2 of 5 boatsThe federal odometer disclosure attached to the reading. IAAI does not record mileage for most towed or floating inventory, so a null there is the source being silent, not a gap in the parse.
primary_damage / secondary_damage52 published values — Front End, All Over, Rear, Left Side, Water/Flood, Total Burn, Normal Wear & Tear, Vandalized, Mechanical and more. primary_damage on 25 of 25 in every categoryThe damage classification the auction assigns. secondary_damage is frequently blank, which means IAAI recorded only one point of damage.
estimated_retail_valueThe auction's actual cash value in dollars. 21 of 25 cars, 22 of 25 SUVs, 25 of 25 vans, but 13 of 25 heavy trucksIAAI's own pre-loss valuation. Where it is null the auction simply did not publish one — it is not a zero.
who_can_buyAn array from DEA, DIS, EXP, LBU, REB, SCR — dealer, dismantler, exporter, licensed business, rebuilder, scrapper. 68,866 lots are open to exportersThe licence a buyer needs. If you are buying from outside the US this is the first filter to apply, not the last.
current_bidAlways nullIAAI publishes the bid count but not the bid amount to a signed-out visitor. We return null rather than a guess. buy_it_now_price, minimum_bid, bid_increment and pre_bid_count are published and do come back.
Live example

Real request and response JSON

Captured from the indexed primary action, search, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/iaai/v1/search",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "make": "TOYOTA",
    "size": 25
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "iaai",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 6645.9,
    "record_count": 25,
    "bytes": 591797,
    "cache_hit": false,
    "stop_reason": "limit_reached",
    "pagination": {
      "page": 1,
      "size": 25,
      "has_more": true,
      "next_page": 2,
      "page_ceiling": 500
    },
    "non_lot_rows_dropped": 1,
    "total_results": 40369,
    "charged_credits": 1,
    "version": "1.0.0"
  },
  "data": {
    "lots": [
      {
        "lot_number": "46686867",
        "lot_id": "46686867~US",
        "stock_number": "46186983",
        "tenant": "US",
        "vin": "5TBDT44196S******",
        "year": 2006,
        "make": "TOYOTA",
        "model": "TUNDRA",
        "trim": "SR5 V8",
        "title": "2006 TOYOTA TUNDRA SR5 V8",
        "body_style": "Double Cab",
        "color": "Blue",
        "interior_color": null,
        "engine": "4.7L V-8 DOHC, VVT, regular , 271HP",
        "cylinders": "8 Cyl",
        "fuel_type": "Gasoline",
        "transmission": "Automatic",
        "drive": "Four Wheel Drive",
        "country_of_origin": "United States",
        "primary_damage": "Normal Wear & Tear",
        "secondary_damage": null,
        "title_type": "Clear",
        "loss_type": null,
        "keys_available": "Key Available",
        "airbags": "Intact",
        "start_code": "Run & Drive",
        "highlights": [
          "Run & Drive"
        ],
        "vehicle_type": "Automobiles",
        "vehicle_subtype": null,
        "odometer": 189336,
        "odometer_unit": "mi",
        "odometer_brand": null,
        "estimated_retail_value": null,
        "current_bid": null,
        "buy_it_now_price": null,
        "repair_cost": null,
        "currency": "USD",
        "sale_date": "2026-09-24T08:30:00+00:00",
        "sale_status": "RS",
        "timed_auction": false,
        "timed_auction_close": null,
        "pre_bid_open": true,
        "buy_now_available": false,
        "yard_name": "Port Murray",
        "yard_name_display": "Port Murray (New Jersey)",
        "yard_number": "621",
        "branch_name": "Port Murray",
        "branch_number": "621",
        "lane": "B-#131",
        "aisle": "SA -175",
        "market": "IAA United States",
        "seller": null,
        "thumbnail": "https://vis.iaai.com/resizer?imageKeys=46686867~SID~I1&width=400&height=300",
        "url": "https://www.iaai.com/VehicleDetail/46686867~US"
      },
      {
        "lot_number": "46681379",
        "lot_id": "46681379~US",
        "stock_number": "46181519",
        "tenant": "US",
        "vin": "JT3HN86R3Y0******",
        "year": 2000,
        "make": "TOYOTA",
        "model": "4RUNNER",
        "trim": "SR5 V6",
        "title": "2000 TOYOTA 4RUNNER SR5 V6",
        "body_style": "Sport Utility",
        "color": "Champagne",
        "interior_color": null,
        "engine": "3.4L V-6 DOHC, regular , 183HP",
        "cylinders": "6 Cyl",
        "fuel_type": "Gasoline",
        "transmission": "Automatic",
        "drive": "Four Wheel Drive",
        "country_of_origin": "Japan",
        "primary_damage": "Normal Wear & Tear",
        "secondary_damage": "Right Side",
        "title_type": "Clear",
        "loss_type": null,
        "keys_available": "Key Available",
        "airbags": "Intact",
        "start_code": "Run & Drive",
        "highlights": [
          "Run & Drive"
        ],
        "vehicle_type": "SUVs",
        "vehicle_subtype": null,
        "odometer": 229496,
        "odometer_unit": "mi",
        "odometer_brand": null,
        "estimated_retail_value": null,
        "current_bid": null,
        "buy_it_now_price": null,
        "repair_cost": null,
        "currency": "USD",
        "sale_date": "2026-09-24T08:30:00+00:00",
        "sale_status": "RS",
        "timed_auction": false,
        "timed_auction_close": null,
        "pre_bid_open": true,
        "buy_now_available": false,
        "yard_name": "Baltimore",
        "yard_name_display": "Baltimore (Maryland)",
        "yard_number": "719",
        "branch_name": "Baltimore",
        "branch_number": "719",
        "lane": "C-#192",
        "aisle": "DZ -2",
        "market": "IAA United States",
        "seller": null,
        "thumbnail": "https://vis.iaai.com/resizer?imageKeys=46681379~SID~I1&width=400&height=300",
        "url": "https://www.iaai.com/VehicleDetail/46681379~US"
      },
      {
        "lot_number": "46681112",
        "lot_id": "46681112~US",
        "stock_number": "46181252",
        "tenant": "US",
        "vin": "JTNKHMBX5K1******",
        "year": 2019,
        "make": "TOYOTA",
        "model": "C-HR",
        "trim": "XLE",
        "title": "2019 TOYOTA C-HR XLE",
        "body_style": "Sport Utility",
        "color": "Gray",
        "interior_color": null,
        "engine": "2.0L I-4 DOHC, VVT, regular , 144HP",
        "cylinders": "4 Cyl",
        "fuel_type": "Gasoline",
        "transmission": "Automatic",
        "drive": "Front Wheel Drive",
        "country_of_origin": "Japan",
        "primary_damage": "Normal Wear & Tear",
        "secondary_damage": null,
        "title_type": "Clear",
        "loss_type": null,
        "keys_available": "Key Available",
        "airbags": "Intact",
        "start_code": "Run & Drive",
        "highlights": [
          "Run & Drive"
        ],
        "vehicle_type": "SUVs",
        "vehicle_subtype": null,
        "odometer": 43405,
        "odometer_unit": "mi",
        "odometer_brand": null,
        "estimated_retail_value": 9050,
        "current_bid": null,
        "buy_it_now_price": null,
        "repair_cost": null,
        "currency": "USD",
        "sale_date": "2026-09-24T08:30:00+00:00",
        "sale_status": "RS",
        "timed_auction": false,
        "timed_auction_close": null,
        "pre_bid_open": true,
        "buy_now_available": false,
        "yard_name": "Miami-North",
        "yard_name_display": "Miami-North (Florida)",
        "yard_number": "736",
        "branch_name": "Miami-North",
        "branch_number": "736",
        "lane": "D-#139",
        "aisle": "F -57",
        "market": "IAA United States",
        "seller": null,
        "thumbnail": "https://vis.iaai.com/resizer?imageKeys=46681112~SID~I1&width=400&height=300",
        "url": "https://www.iaai.com/VehicleDetail/46681112~US"
      }
    ]
  }
}
Actions

What the IAAI API does

ActionDescriptionConcrete use caseKey params
searchSearch live IAAI auction lots by free-text `query` and/or 25 structured filters (make, model, trim, year or year_min/year_max, damage, title_type, vehicle_type, loss_type, start_code, fuel_type, transmission, drive, cylinders, airbags, auction_type, who_can_buy, region, market, availability, branch, state, body_style, colour, country_of_origin, odometer_min/max). Sortable and paginated. Returns lot cards with damage, title, odometer, estimated value, auction date, branch and thumbnail, plus IAAI's own total for the query.Pricing teams call search to search live IAAI auction lots by free-text `query` and/or 25 structured filters (make, model,….query, make, model, trim, year, ...
lot_detailThe full record for one lot by `lot_number`, read from IAAI's own page view-model: VIN (masked by IAAI), year/make/model/trim, primary and secondary damage, title type/state/brand, odometer with its ACTUAL/NOT-ACTUAL brand, engine, fuel, drive, transmission, airbags, start code, vehicle grade, ACV, buy-now price, minimum bid, bid increment, pre-bid participant count, auction date, lane/aisle, buyer-licence requirements and full branch location with latitude/longitude.Marketplace operators call lot_detail to get the full record for one lot by `lot_number`, read from IAAI's own page view-model.lot_number, include_images
lot_imagesEvery auction photo for one lot: ordered full-size and thumbnail URLs with the native pixel dimensions of each image, plus the 360-degree viewer URL when IAAI publishes one.Catalog enrichment teams call lot_images to get every auction photo for one lot.lot_number
branchesLive list of IAAI branches (yards) you can scope `search` to, each with its current lot count. Pass a name straight back as search's `branch` filter.Retail analysts call branches to get live list of IAAI branches (yards) you can scope `search` to, each with its current lot count.query
filtersThe live filter taxonomy straight from IAAI, with a current lot count for every value: the exact strings `search` accepts for the open-ended filters it cannot enumerate up front (1,785 makes, 6,311 models, 849 branches, 229 body styles). Pass any search filter alongside `group` to get the counts WITHIN that query — e.g. group=Model with make=TOYOTA lists only Toyota models and how many lots each has right now.Pricing teams call filters to get the live filter taxonomy straight from IAAI, with a current lot count for every value.group, query, make, model, trim, ...
Code samples

Call search from your stack

curl -X POST https://api.reefapi.com/iaai/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"make":"TOYOTA","size":25}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.iaai.search with {"make":"TOYOTA","size":25}.
Use cases

Who uses this API and why

  • Price a rebuild before you bid: pull the lots for a make and damage type with the odometer, its ACTUAL or NOT-ACTUAL brand, the title document, the actual cash value and every photograph, and build a repair estimate from the damage classification rather than from a thumbnail.
  • Import vehicles into another country: filter to who_can_buy=exporter across 68,866 eligible lots, add a title document filter so you only see paperwork your customs authority accepts, and sort by auction date so you bid in the order the sales actually close.
  • Cover both salvage houses in one product: run the same query against this API and our Copart API and merge the results without a mapping layer, because the field names match on both sides.
  • Source parts by damage: search on primary damage and start code to find cars wrecked at one end with an intact drivetrain, scope it to the branches within your freight radius using the live per-branch lot counts, and read the engine, cylinder count and drive type off each record.
  • Track what a segment is worth: sample a make, model and year band over time and follow the actual cash values, buy-now prices and odometer distributions to see where salvage pricing for that segment is moving.
FAQ

Questions developers ask before integrating

Does the IAAI API return the current bid?

No, and no signed-out source can. IAAI shows a signed-out visitor how many people are pre-bidding but not what they have bid, so current_bid is null on every lot we return. What you do get is the buy-now price where the lot has one — 20,705 lots carry a real buy-now amount — plus the minimum bid, the $25 bid increment and pre_bid_count, the number of bidders IAAI itself prints. If your product needs a live high bid, this API will not supply it and neither will scraping the page yourself.

Is the VIN complete?

No. IAAI masks the last six characters for signed-out visitors, exactly as Copart does, so every VIN comes back in the form JTDKDTB32D1 followed by six asterisks. The first eleven characters still decode the manufacturer, model year, plant and descriptor section, which is enough to identify and disambiguate a vehicle but not enough to run a title-history check. A vin_status field tells you whether IAAI flags the VIN as OK.

How do I find the exact make, model or branch string a filter wants?

Call the filters action. IAAI publishes 1,785 makes, 6,311 models, 10,180 series and 849 branches, far too many to document, and it returns a live lot count beside every value. Pass any search filter alongside it and the counts narrow to that query — group=Model with make=TOYOTA lists only Toyota models and how many of each are up right now. This matters because IAAI's own spellings are not always tidy: the engine-size taxonomy publishes 2.0L without a space and 2.5 L with one, so taking the string from filters is the only reliable way to get a hit.

Does it cover Canada as well as the United States?

Yes. 345,742 lots sit in IAA United States, 4,666 in IAA Canada and 8,355 come through Ritchie Bros., and the market filter selects between them. Canadian lots carry their own id format and a CAD currency on the record, and they are returned by the same search and resolved by the same lot_detail call as US lots.

How are IAAI lots numbered, and which number do I store?

IAAI carries two numbers that are not the same and are easy to confuse. The Stock # it displays is one number; the item id in its own URLs is another. Store lot_number — that is the item id, and it is the one lot_detail resolves. stock_number comes back on the same record so you can show the number a buyer will recognise. Keep lot_id if you work across both countries, since it carries the country suffix.

Do the filters actually narrow the results, or are they ignored?

All 25 of them narrow it, and we publish the proof: against an unfiltered index of 358,763 lots, front-end damage returns 115,262, salvage titles 87,572, motorcycles 8,542, electric vehicles 6,277, manual transmissions 6,935 and a single branch 768. Any filter IAAI accepted but quietly ignored was left out of this API rather than exposed.

How deep does paging go?

25 to 100 lots a page and IAAI stops at page 500. Anything under 25 is clamped up to 25 by the source, so the API will not promise you a smaller page than it can deliver. Consecutive pages share no lots — pages 1 and 2 of the same query overlapped on zero ids when we measured it.

Does it return seller names or personal contact details?

No. IAAI gates the seller behind a buyer login, so seller and seller_type are null on every lot — there is no personal data on the signed-out surface to return. The branch telephone number and street address are business contact details for the auction site itself, and they are returned only when you explicitly ask for them.

What is the IAAI API?

IAAI API is a ReefAPI endpoint group for us and canadian salvage auction lots, damage and title. It returns live JSON through POST requests under /iaai/v1.

Is the IAAI API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. IAAI calls use the same shared credit balance as every other ReefAPI engine.

Do I need an IAAI login or account?

No login to IAAI is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the IAAI data?

The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the IAAI API use?

IAAI actions currently cost 1 credit per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.

Can I call IAAI from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call iaai actions with the same key, credit pool and JSON envelope used by normal REST requests.

docs / iaai

IAAI

US and Canadian salvage auction lots, damage and title.

base /iaai/v15 endpoints
post/iaai/v1/lot_detail1 credit

The full record for one lot by `lot_number`, read from IAAI's own page view-model: VIN (masked by IAAI), year/make/model/trim, primary and secondary damage, title type/state/brand, odometer with its ACTUAL/NOT-ACTUAL brand, engine, fuel, drive, transmission, airbags, start code, vehicle grade, ACV, buy-now price, minimum bid, bid increment, pre-bid participant count, auction date, lane/aisle, buyer-licence requirements and full branch location with latitude/longitude.

ParameterAllowed / rangeDescription
lot_numberrequiredIAAI item id — the id in an iaai.com /VehicleDetail/ URL, or a search result's `lot_number`. '46677675', '46677675~US', a Canadian 'Imp_2995978~CA' and a full URL are all accepted; pass `lot_id` back verbatim to keep the tenant. NOTE: this is not the same number as the displayed Stock #.
include_images = falseoptionalAlso return every auction photo in this same call. The photos come from the page this action already fetches, so lot_detail+include_images costs one call instead of calling lot_images separately.
Try in playground →
post/iaai/v1/lot_images1 credit

Every auction photo for one lot: ordered full-size and thumbnail URLs with the native pixel dimensions of each image, plus the 360-degree viewer URL when IAAI publishes one.

ParameterAllowed / rangeDescription
lot_numberrequiredIAAI item id to fetch photos for.
Try in playground →
post/iaai/v1/branches1 credit

Live list of IAAI branches (yards) you can scope `search` to, each with its current lot count. Pass a name straight back as search's `branch` filter.

ParameterAllowed / rangeDescription
queryoptionalOptional case-insensitive substring to find a branch, e.g. 'dallas', '(PA)', 'phoenix'.
Try in playground →
post/iaai/v1/filters1 credit

The live filter taxonomy straight from IAAI, with a current lot count for every value: the exact strings `search` accepts for the open-ended filters it cannot enumerate up front (1,785 makes, 6,311 models, 849 branches, 229 body styles). Pass any search filter alongside `group` to get the counts WITHIN that query — e.g. group=Model with make=TOYOTA lists only Toyota models and how many lots each has right now.

ParameterAllowed / rangeDescription
groupoptionalWhich taxonomy to return — Make, Model, Series, BranchName, StateDesc, BodyStyleName, PrimaryDamageDesc, InventoryTypes, SaleDocument, ExteriorColor, CountryOfOrigin, DisplLiters, Year. Omit to get every group at once.
queryoptionalFree-text keyword across the listing (make, model, series, stock number). Leave empty to browse everything and use filters.
makeoptionalVehicle make, exactly as IAAI spells it (TOYOTA, FORD, BMW). Get the live list from the `filters` action.
modeloptionalVehicle model (PRIUS C, F150, CIVIC). Pair with `make`.
trimoptionalSeries / trim level as IAAI spells it (e.g. TWO, LIMITED, XLE).
yearoptional1900–2030Exact model year. For a span use year_min / year_max.
year_minoptional1900–2030Earliest model year (inclusive).
year_maxoptional1900–2030Latest model year (inclusive).
title_typeoptionalsalvage · clean · non_repairable · repairable · parts_only · bill_of_sale · noneFilter by title / sale document.
vehicle_typeoptionalautomobile · boat · bus · classic · equipment · fleet · heavy_truck · light_truck · medium_truck · motorcycle · pickup · recreational · rental · suv · trailer · vanFilter by vehicle category.
damageoptionalall_over · front_end · front · rear · front_and_rear · left_front · left_rear · left_side · right_front · right_rear · right_side · left_and_right_side · roof · roof_damage · rollover · roll_over · undercarriage · under_carriage · hail · flood · fresh_water · salt_water · water · total_burn · engine_burn · interior_burn · exterior_burn · engine_fire · interior_fire · mechanical · engine · engine_damage · transmission_damage · suspension · frame · structural · electrical · theft · vandalized · stripped · storm_damage · normal_wear · interior_damage · front_window · rear_window · biohazard · repossession · charity · none · unknownFilter by primary damage type.
loss_typeoptionalcollision · fire · theft · water · otherFilter by loss type (how the vehicle was written off).
start_codeoptionalrun_and_drive · starts · stationary · cannot_testFilter by IAAI's start/run condition code.
fuel_typeoptionalgasoline · diesel · electric · hybrid · flexible · flexible_fuel · otherFilter by fuel type.
transmissionoptionalautomatic · manual · cvt · missing · unknownFilter by transmission.
driveoptionalfwd · rwd · awd · four_wheel_drive · 4x2Filter by drive line.
cylindersoptional1 · 2 · 3 · 4 · 5 · 6 · 8 · 10 · 12 · rotary · otherFilter by cylinder count.
airbagsoptionalintact · deployedFilter by airbag state.
auction_typeoptionallive · timed · buy_nowFilter by auction format.
who_can_buyoptionalpublic · dealer · dismantler · exporter · rebuilder · scrapper · non_auto_licensed_business · other_licensed_businessFilter by buyer licence required. `exporter` and `public` are the ones that matter if you are buying from outside the US.
regionoptionaleast · west · north · south · midwest · northeast · northwest · southeast · southwest · alaska · hawaiiFilter by IAAI sales region.
marketoptionalus · canada · ritchie_brosFilter by market (US, Canada or Ritchie Bros.).
availabilityoptionalwith_sale_date · without_sale_dateOnly lots that do / do not have a scheduled sale date.
odometer_minoptional0–Minimum odometer reading (miles).
odometer_maxoptional0–Maximum odometer reading (miles).
branchoptionalRestrict to one IAAI branch by its exact name. Get names and live lot counts from the `branches` action.
stateoptionalVehicle location state, IAAI's spelling (full name for US states, 2-letter for Canadian provinces).
body_styleoptionalBody style as IAAI spells it (SEDAN 4D, HATCHBACK, PICKUP...).
coloroptionalExterior colour.
country_of_originoptionalCountry the vehicle was manufactured in.
vehicle_subtypeoptionalSub-category for non-car inventory (ATV, Boat, Motor Home...).
engine_sizeoptionalEngine displacement as IAAI spells it, e.g. '2.0 L'.
sortoptionalsale_date_asc · sale_date_desc · year_desc · year_asc · odometer_asc · odometer_desc · make_az · make_za · model_az · branch_az · state_az · stock_asc · stock_descResult ordering. Omit for IAAI's own default relevance order.
page = 1optional1–500Page number (1-based). IAAI stops paging at 500.
size = 25optional25–100Results per page (25-100). IAAI clamps anything below 25 up to 25.
Try in playground →