Car-Part Scraper — Used Auto Parts Prices & Recycler Stock avatar

Car-Part Scraper — Used Auto Parts Prices & Recycler Stock

Pricing

from $1.00 / 1,000 part listings

Go to Apify Store
Car-Part Scraper — Used Auto Parts Prices & Recycler Stock

Car-Part Scraper — Used Auto Parts Prices & Recycler Stock

Scrape Car-Part used auto parts: prices, ARA grades, stock numbers, year/make/model, core charges, ZIP distance, and photos. One part, a year range, or several parts on one vehicle. Phone and email stay off unless you opt in.

Pricing

from $1.00 / 1,000 part listings

Rating

0.0

(0)

Developer

Andrej Kiva

Andrej Kiva

Maintained by Community

Actor stats

0

Bookmarked

13

Total users

5

Monthly active users

4 days ago

Last modified

Categories

Share

Car-Part Scraper — Used Auto Parts Prices, Grades & Recycler Inventory

Disclaimer: Unofficial tool — not affiliated with, sponsored by, or endorsed by Car-Part or its affiliates. Data is read from publicly accessible pages only. No login. You are responsible for complying with applicable law (including GDPR where personal data appears) and the site’s terms. No warranty on accuracy or availability. Provided for informational and research use.

Contact-data controls: Phone/WhatsApp/fax and email fields are omitted from the dataset by default. Enable includePhones and/or includeEmails only for contacts already published on public pages and only when you have a lawful basis. Any contact-field examples below assume that explicit opt-in; otherwise those fields are absent.

Scrape used auto parts inventory from North America's largest recycler marketplace network. Extract structured listings: part name, donor year / make / model, asking price, core charge, ARA part grade, stock number, mileage, supplier name and website, distance from ZIP, live-chat flag, and part photos.

Search one year + make/model + part, a year range, several parts on the same vehicle, or paste existing search.cgi result URLs. Handles interchange refine pages, multi-page results, and US residential proxy defaults for Cloudflare.

Best for: used-parts price intelligence, salvage / recycler sourcing, body-shop inventory checks, core-charge research, and ZIP-distance supplier shortlists.

Crawloop US Salvage Suite — salvage auctions and used-parts comps.

CopartIAAICar-Part
Copart ScraperIAAI ScraperCar-Part Scraper ◄── you are here

When to use this Actor

  • Parts price benchmarking — Compare recycler asking prices for engines, transmissions, body panels, lighting, and electronics by vehicle year and model.
  • Whole-vehicle pricing — Send queries with several parts (engine, transmission, hood, headlight) and get one dataset. maxItems caps the run.
  • Local sourcing — Sort by distance from a buyer ZIP. Turn on includePhones and includeEmails to add yard phone and email.
  • Interchange-aware searches — Take the first option, match a trim/VIN label, or walk interchange choices (at most 8 branches; a nested page uses only its first child).
  • Exact browser searches — Paste a search.cgi URL to resume a filtered results set without re-entering the form.

Data pipeline

Input Flow Output
───────────────────── ───────────────────── ──────────────────────────
year + makeModel + part ──► catalog resolve + form POST ──► interchange (optional)
queries (many parts) ──► one search per part ──► shared maxItems cap
startUrls (search.cgi) ──► paginate results pages ──► quoteForm + table parse
ZIP + sort + year range ──► US residential HTTP ──► price, grade, yard, images

Key Features

  • Catalog resolution — Fuzzy-matches make/model and part names against the live dropdown catalog (1,600+ models, 700+ part types). Prefer exact labels like Engine or Headlight Assembly.
  • Structured quote fields — Reads quoteForm.cgi parameters (stock, price, seller id) for reliable records.
  • ARA grade & core charge — Captures part grade and core / exchange fees when shown.
  • Supplier — Name, website, city / state / country, live chat flag. Phone and email are added only when includePhones / includeEmails are on.
  • Year range — Optional yearTo is sent as Car-Part's end year. Empty means the single start year.
  • Several parts — queries runs engine, transmission, and body parts in one Actor run. A filled list ignores the single year / make / part fields.
  • Images — CDN photo URLs when recyclers upload pictures.
  • US residential proxy default — Required for stable access to search.cgi behind Cloudflare.

Input Parameters

ParameterTypeDefaultDescription
includePhonesBooleanfalseAdd phone, mobile, WhatsApp, or fax already published on the page.
includeEmailsBooleanfalseAdd email already published on the page.
startUrlsArray[]Car-Part search.cgi result URLs. Skips the form when set.
yearInteger—Vehicle year (required for a single-part search).
yearToInteger—Optional end year. Empty searches only year. Applies to every queries row.
makeModelString—Catalog make/model, e.g. Toyota Camry. Ignored when queries has rows.
partString—Catalog part name, e.g. Engine. Ignored when queries has rows.
queriesArray[]Several {year, makeModel, part} rows for one vehicle.
userZipString—ZIP / postal code for distance sorting.
userLocationStringUSAAll States / USA / Canada / Mexico.
sortByStringpriceprice, zip, grade, year, condition.
interchangeModeStringfirstfirst, match, or all. all stops after 8 branches.
interchangeQueryString—Substring for match mode (e.g. 2.5L).
vinString—Optional VIN passed through to Car-Part Smart VIN search.
maxItemsInteger100Max listings for the whole run (0 = unlimited).
maxPagesInteger20Max result pages per search / interchange branch.
concurrencyInteger1Parallel page fetches (1–5).
softDeadlineSecsInteger0Stop early and return partial results. 0 uses 720s, still inside the Actor timeout.
proxyConfigurationObjectUS RESIDENTIALApify Proxy — US residential required.
{
"year": 2019,
"makeModel": "Toyota Camry",
"part": "Engine",
"userZip": "90210",
"userLocation": "USA",
"sortBy": "price",
"interchangeMode": "first",
"maxItems": 100,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "US"
}
}

Input example — several parts on one vehicle

{
"yearTo": 2019,
"userZip": "90210",
"userLocation": "USA",
"sortBy": "price",
"interchangeMode": "first",
"maxItems": 80,
"queries": [
{ "year": 2015, "makeModel": "Toyota Camry", "part": "Engine" },
{ "year": 2015, "makeModel": "Toyota Camry", "part": "Transmission" },
{ "year": 2015, "makeModel": "Toyota Camry", "part": "Hood" },
{ "year": 2015, "makeModel": "Toyota Camry", "part": "Headlight Assembly" }
],
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "US"
}
}

year, makeModel, and part outside queries are ignored while that list has rows. yearTo applies to every row.

Input example — result URL

{
"startUrls": [
{
"url": "https://www.car-part.com/cgi-bin/search.cgi?userDate=2013&userModel=Volkswagen%20Golf%20GTI&userPart=Engine&userZip=06095&userPreference=price&userPage=1"
}
],
"maxItems": 50,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "US"
}
}

Output Format

Each dataset item is one recycler part offer:

FieldDescription
listingId, sessionIdComposite listing key; search-session token
year, makeModel, partNameDonor vehicle and part type as listed
requestedYear, requestedYearTo, requestedMakeModel, requestedPartSearch that produced the row. requestedYearTo is empty for a single year.
description, interchangeCodeCondition / interchange notes
price, priceFormatted, coreCharge, currencyPricing
partGrade, stockNumber, mileageGrade, stock tag, donor miles
supplierName, supplierWebsiteRecycler name and site. supplierPhone and supplierEmail appear only when includePhones / includeEmails are on.
country, stateProvince, city, distanceMilesLocation & distance from ZIP
liveChatAvailable, imageUrlsChat flag and photo URLs
scrapedAtUTC ISO timestamp

Output example

{
"listingId": "1127-3S2523-2010-3120",
"sessionId": "13000000735758473",
"year": 2010,
"makeModel": "Audi A3",
"partName": "Engine Assembly",
"requestedYear": 2010,
"requestedYearTo": null,
"requestedMakeModel": "Audi A3",
"requestedPart": "Engine",
"description": "2.0L,AT,AWD,W/TURBO",
"price": 3120,
"priceFormatted": "$3120",
"coreCharge": null,
"currency": "USD",
"partGrade": "A",
"stockNumber": "3S2523",
"mileage": 0,
"supplierName": "All Foreign Auto Parts - PRP Freight, CDC",
"supplierWebsite": "http://Www.AllForeignAutoParts.com",
"sellerId": "1127",
"country": "USA",
"stateProvince": "PA",
"city": "Pittsburgh",
"distanceMiles": 390,
"liveChatAvailable": true,
"imageUrls": ["https://wsimgky.car-part.com/3885/2023/3S2523/3885_396029_01.jpg"],
"dbPart": "300.1",
"dbModel": "75.29.1.1",
"interchangeCode": "CDFDE",
"scrapedAt": "2026-07-24T16:00:00Z"
}

Notes

  • Proxy: Datacenter IPs typically receive Cloudflare 403 on cgi-bin/search.cgi. Keep US residential enabled.
  • Exact catalog names: Prefer exact part labels (Engine, not a free-text synonym). The Actor fuzzy-matches, but exact values are more reliable.
  • Interchange all: At most 8 branches per search. A nested interchange page keeps only its first child. Pair with a tight maxItems / maxPages.
  • queries: One bad catalog name is skipped. If every row fails, the run finishes with 0 listings and the first catalog error.

Use cases

Use caseWhat you get
Parts price benchmarkingRecycler asking prices by year / make / model / part
Local sourcingZIP distance + supplier name / website. Phone and email only with includePhones / includeEmails.
Whole vehicleSeveral parts in queries, one dataset, one maxItems cap
Interchange coverageFirst option, a text match, or up to 8 branches. Nested pages keep the first child.
Salvage / body-shop opsARA grade, stock #, core charge, photos
AI / MCP workflowsRun via Apify API, clients, or MCP and summarize part offers

Integration examples

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('crawloop/car-part-scraper').call({
year: 2019,
makeModel: 'Toyota Camry',
part: 'Engine',
userZip: '90210',
maxItems: 50,
proxyConfiguration: {
useApifyProxy: true,
apifyProxyGroups: ['RESIDENTIAL'],
apifyProxyCountry: 'US',
},
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.slice(0, 5));

Python

from apify_client import ApifyClient
client = ApifyClient(token)
run = client.actor("crawloop/car-part-scraper").call(
run_input={
"year": 2019,
"makeModel": "Toyota Camry",
"part": "Engine",
"userZip": "90210",
"sortBy": "price",
"maxItems": 50,
"proxyConfiguration": {
"useApifyProxy": True,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "US",
},
}
)
items = list(client.dataset(run["defaultDatasetId"]).iterate_items())
print(len(items), items[:3])

cURL

curl "https://api.apify.com/v2/acts/crawloop~car-part-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"year": 2019,
"makeModel": "Toyota Camry",
"part": "Engine",
"userZip": "90210",
"maxItems": 50,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "US"
}
}'

MCP and AI assistants

Use this Actor from AI tools via Apify MCP. Connect your Apify account, then call crawloop/car-part-scraper.

Example prompts:

  • "Run Car-Part Scraper for 2019 Toyota Camry Engine near ZIP 90210, max 50, and return price, partGrade, supplierName, distanceMiles"
  • "Scrape Car-Part offers for a 2015 Honda Civic Headlight Assembly and summarize the cheapest 10"
  • "Chain Copart Scraper then Car-Part Scraper when I have a salvage lot year/make/model and need used engine and transmission prices"

Suite next step

For US salvage lots (VIN, bid, damage, ACV), run Copart Scraper then IAAI Scraper. Use this Actor after a lot: put the donor year and model on each row of queries (engine, transmission, hood, lights) and compare recycler asking prices in one dataset.

ActorRole
Copart ScraperUS / CA salvage lots, bids, VIN
IAAI ScraperUS / CA salvage lots, VIN, ACV
Car-Part Scraper ◄── you are hereUsed auto parts & recycler stock
Cars & Bids ScraperEnthusiast car auctions, live bids and sold prices
Mobile.de ScraperGerman used cars and dealer inventory