Auto-advertenties scrapen: Cars.com, Autotrader en CarGurus voor prijsinformatie

Dealerprijsinformatie is verspreid over Cars.com, Autotrader en CarGurus — dezelfde auto's, verschillend geprijsd per postcode en overal gekruist gepost. Hier leest u hoe u ze kunt scrapen, dedupliceren op VIN en de anti-bot muren kunt omzeilen.

Dealerprijsinformatie bevindt zich niet op één plek. Dezelfde gebruikte auto wordt tegelijkertijd op Cars.com, Autotrader en CarGurus vermeld, verschillend geprijsd afhankelijk van de postcode van de koper, en elke site beschermt zijn pagina's met anti-bot bescherming. Goed scrapen draait minder om het parsen van een pagina en meer om drie dingen: zoekopdrachten filteren zodat u daadwerkelijk elke advertentie kunt bereiken, hetzelfde voertuig over bronnen dedupliceren op VIN en de muren omzeilen zonder een vloot van verbrande IP's. Deze gids behandelt alle drie, met code die u kunt aanpassen aan een van de grote advertentiesites.

Wat een auto-advertentie u biedt

Elke voertuigadvertentie is een gedetailleerd record zodra u het parseert: jaar, merk, model en uitvoering; prijs en kilometerstand; de VIN; carrosserietype, aandrijving, brandstof, transmissie, cilinders en deuren; interieur- en exterieurkleur; een voorraadnummer; de functielijst; afbeeldingen; en dealergegevens plus een dealbeoordeling op sites die er een berekenen. Dat is een volledige waarderingsdataset per rij. De velden waarop u uw pijplijn bouwt zijn prijs, kilometerstand, VIN en dealer — al het andere is verrijking.

Eerst filteren: bereik elke advertentie

Advertentiesites pagineren in vaste paginagroottes (meestal 20 per pagina) en beperken hoe diep een enkele zoekopdracht gaat — vaak rond de 1.000 resultaten in totaal. Als een zoekopdracht meer auto's oplevert dan dat, zijn de extra's simpelweg onbereikbaar via paginering. De oplossing is segmentatie: splits een brede zoekopdracht in smallere op basis van merk, model, jaartal, prijsklasse of postcode zodat elke onder de limiet blijft, en verenig dan de resultaten. Cars.com codeert dit allemaal handig in de URL, zodat u zoekopdrachten programmatisch kunt bouwen.

from urllib.parse import urlencode

def search_url(zip_code, make="", model="", max_price="", year_min=""):
    params = {
        "stock_type": "used",
        "makes[]": make,
        "models[]": model,
        "list_price_max": max_price,
        "year_min": year_min,
        "maximum_distance": "all",
        "zip": zip_code,
        "page_size": 20,
        "sort": "listed_at_desc",
    }
    return "https://www.cars.com/shopping/results/?" + urlencode(params)

print(search_url("10001", make="toyota", model="camry", year_min=2020))
Statistieken diagram van auto-advertentie scrapen: 20 advertenties per pagina, 1000 bereikbaar per zoekopdracht, 2-5 seconden vertragingen, VIN als de cross-site deduplicatie sleutel
Een enkele zoekopdracht bereikt maximaal 1.000 resultaten — segmenteer op merk, jaar of postcode om de rest te bereiken, en tempoverzoeken om onder detectie te blijven.

Omzeil de muur: residentiële proxies

Cars.com zit achter Cloudflare; andere autosites gebruiken Imperva met hCaptcha of reCAPTCHA die onder belasting worden geactiveerd. Een datacenter IP die advertentiepagina's hamert, wordt snel uitgedaagd. Residentiële proxies van echte ISP's zien eruit als gewone shoppers, en door ze te roteren worden verzoeken verspreid zodat geen enkel adres de snelheidslimiet overschrijdt. Houd een vertraging van 2-5 seconden tussen verzoeken — het tempo is net zo belangrijk als het IP. Voor kleine, incidentele pulls is een datacenter pool prima; voor continue monitoring op schaal is residentieel het verschil tussen een run die eindigt en een die vastloopt op een CAPTCHA.

import requests, time, random

PROXY = "http://USER:PASS@gate.quantumproxies.io:8000"
proxies = {"http": PROXY, "https": PROXY}
HEADERS = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"}

def fetch(url):
    r = requests.get(url, proxies=proxies, headers=HEADERS, timeout=20)
    r.raise_for_status()
    time.sleep(random.uniform(2, 5))   # polite, and harder to fingerprint
    return r.text

Als het doel advertenties rendert met JavaScript of aanhoudende CAPTCHAs gooit, is een Scraper API die een echte browser vingerafdruk draagt en de anti-bot laag voor u oplost minder kwetsbaar dan het onderhouden van uw eigen browser farm. Onze gids over het omzeilen van Cloudflare in 2026 behandelt waar die lijn valt.

Verkrijg residentiële proxies voor auto-advertentiesites

Dedupliceren op VIN over bronnen

De meest bruikbare kolom in autogegevens is de VIN. Omdat dealers dezelfde auto op elke marktplaats kruislings posten, zit uw ruwe scrape vol met duplicaten die eruitzien als afzonderlijke advertenties. De VIN is een wereldwijd unieke identificatie voor het fysieke voertuig, dus door erop te sleutelen worden die duplicaten samengevoegd tot één record — en kunt u vergelijken hoe dezelfde auto geprijsd is op Cars.com, Autotrader en CarGurus, of door welke dealer. Houd de laagste prijs per VIN, of houd ze allemaal getagd per bron, afhankelijk van wat u meet.

def dedupe_by_vin(rows):
    best = {}
    for r in rows:
        vin = r.get("vin")
        if not vin:
            continue
        price = int(r["price"])
        if vin not in best or price < int(best[vin]["price"]):
            best[vin] = r          # keep the cheapest listing per car
    return list(best.values())
Stroomdiagram van een auto-advertentie pijplijn: bouw een gefilterde zoek-URL, haal op via een residentiële proxy voorbij Cloudflare, parse advertentievelden, dedupliceer op VIN
Filter, haal op via een residentiële exit, parse, en collapseer dan duplicaten op VIN zodat u auto's vergelijkt in plaats van advertenties dubbel te tellen.

Geo-prijzen: dezelfde auto, andere postcode

Autoprijzen zijn lokaal. Hetzelfde model toont verschillende prijzen en voorraad afhankelijk van de postcode waaruit u zoekt, omdat dealers en vraag per regio variëren. Om die spreiding vast te leggen, veeg een set postcodes en, waar de site personaliseert op basis van de locatie van de bezoeker, routeer elk verzoek via een exit in de bijpassende regio. Een residentiële pool met land- en stadstargeting laat u prijzen zien zoals een lokale koper dat doet — essentieel voor arbitrage, dealerbenchmarking of het bouwen van een waarderingsmodel dat niet scheefgetrokken is naar één markt.

zips = ["10001", "90001", "60601", "77001"]  # NY, LA, Chicago, Houston
spread = {}
for z in zips:
    url = search_url(z, make="toyota", model="camry", year_min=2021)
    rows = parse_listings(fetch(url))          # exit geo-matched to the ZIP
    spread[z] = [int(r["price"]) for r in rows]

# now compare median price by market
for z, prices in spread.items():
    prices.sort()
    print(z, "median", prices[len(prices)//2])

Dit is hetzelfde locatie-eerste patroon achter concurrentieprijsmonitoring en vastgoedgegevensverzameling — waar de prijs afhankelijk is van waar de koper zich bevindt, zijn geo-gerichte exits niet onderhandelbaar.

Veiling- en groothandelsbronnen

Retailadvertentiesites vertellen u wat dealers vragen; veilingplatforms zoals Copart vertellen u voor welke auto's daadwerkelijk van eigenaar wisselen op groothandelsniveau — de andere helft van een prijsmodel. Deze sites zijn zwaarder verdedigd: Copart bijvoorbeeld, gebruikt Imperva webbescherming met gedragsfingerprinting, en hCaptcha of reCAPTCHA uitdagingen verschijnen onder hogere aanvraagvolumes. De paginering is ook strakker — 20 voertuigen per pagina met een harde limiet van ongeveer 50 pagina's, dus een enkele zoekopdracht bereikt maximaal ongeveer 1.000 kavels. Het bereiken van een volledige inventaris betekent het segmenteren van zoekopdrachten op merk, model, jaartal, veilingterrein of conditie, precies zoals bij retailsites, en elke segment op zichzelf uitvoeren.

Omdat deze platforms resultaten en paginering laden met JavaScript en verdacht verkeer uitdagen, willen ze residentiële IP's en een 2-5 seconden pauze tussen verzoeken als minimum. Datacenter proxies behandelen kleine, incidentele pulls; alles wat aanhoudt hoort op residentiële exits. De beloning is echte signalen: biedgeschiedenis, verkoopstatus en kavelconditie voeden vraagvoorspelling en export-importanalyse die alleen retailvraagprijzen niet kunnen geven.

Monitor, niet slechts één keer scrapen

Een eenmalige dump veroudert onmiddellijk in een markt waar advertenties dagelijks veranderen. Het duurzame patroon is een geplande scrape die uw doelzoekopdrachten vastlegt en opeenvolgende runs vergelijkt — nieuwe advertenties, prijsdalingen en auto's die zijn verkocht. Sleutel elke rij op VIN zodat een prijswijziging op hetzelfde voertuig ondubbelzinnig is, timestamp elke snapshot, en u heeft een tijdreeks die u kunt trend: hoe snel specifieke modellen afschrijven, welke dealers prijzen verlagen, waar voorraad zich ophoopt. Routeer die geplande runs via roterende residentiële IP's zodat een dagelijkse taak vanaf hetzelfde adres niet langzaam een blokkade verdient.

Veelgestelde vragen

Kunt u Cars.com en Autotrader scrapen?

Ja — de advertentiepagina's tonen openbaar beschikbare voertuiggegevens. De praktische uitdaging is anti-bot bescherming: Cars.com gebruikt Cloudflare en anderen gebruiken Imperva met CAPTCHAs. Residentiële proxies, realistische headers en een 2-5 seconden vertraging tussen verzoeken houden een scrape draaiende. Respecteer de gebruiksvoorwaarden van elke site en vermijd het verzamelen van persoonlijke gegevens.

Hoe voorkom ik dat ik geblokkeerd word bij het scrapen van auto-advertenties?

Roteer residentiële IP's zodat geen enkel adres te veel verzoeken doet, tempoverzoeken met een 2-5 seconden willekeurige vertraging, stuur een echte browser User-Agent, en segmenteer grote zoekopdrachten in kleinere in plaats van duizenden diep te pagineren. Als CAPTCHAs aanhouden, schakel dan over naar een Scraper API die de anti-bot laag en JavaScript rendering afhandelt.

Waarom krijg ik dubbele auto's bij het scrapen?

Dealers kruislings posten hetzelfde voertuig op meerdere marktplaatsen, dus één fysieke auto verschijnt als meerdere advertenties. Dedupliceer op de VIN, die het voertuig uniek identificeert ongeacht de site. Sleutelen op VIN verandert duplicaten in een prijsvergelijking voor dezelfde auto over bronnen in plaats van opgeblazen tellingen.

Veranderen autoprijzen echt per locatie?

Ja. Voorraad en prijzen variëren per regio, en veel sites personaliseren resultaten naar de postcode van de zoeker. Om de echte spreiding vast te leggen, zoek meerdere postcodes en routeer elk verzoek via een exit in de bijpassende regio met behulp van geo-gerichte residentiële proxies, zodat u lokale prijzen ziet in plaats van een scheefgetrokken nationaal beeld.

Het scrapen van autoadvertenties komt neer op het bereiken van elke auto (segmenteer voorbij de ~1.000-resultatenlimiet), het omzeilen van de anti-bot muur (roterende residentiële IP's, beleefd tempo), het samenvouwen van duplicaten op VIN, en het vastleggen van geo-spreidingen met locatiegerichte exits. Bouw de pijplijn rond prijs, kilometerstand, VIN en dealer, en u heeft dealerprijsinformatie over elke grote marktplaats tegelijk.

Begin met het scrapen van auto-advertenties met QuantumProxies