Camper Scraper API

Multi-site camper scraper systeem — doorzoek campers van 18+ dealers via één API.

/camper-scraper
-
Campers
-
Actief
-
Gem. prijs
-
Merken
-
Dealers

Endpoints 18

GET /campers Alle campers met filters

Query parameters

ParameterTypeOmschrijving
merkstringFilter op merknaam (bevat)
modelstringFilter op modelnaam (bevat)
minPrijsnumberMinimum prijs in euro
maxPrijsnumberMaximum prijs in euro
minBouwjaarnumberMinimum bouwjaar (bv. 2020)
maxBouwjaarnumberMaximum bouwjaar
transmissiestringFilter op transmissie (Automaat / Handgeschakeld)
motortypestringFilter op motortype
statusstringACTIEF / VERKOCHT / GERESERVEERD
bronstringFilter op bron/website
sortstringSorteerveld (prijs, bouwjaar, kilometerstand)
orderstringasc / desc
limitnumberAantal resultaten (max 100, default 50)
offsetnumberPaginering offset
zoekstringFull-text zoek (merk, model, omschrijving)
dealerIdnumberFilter op dealer ID
merkIdnumberFilter op merk ID

Voorbeeld

GET /campers?merk=Pössl&minPrijs=50000&maxBouwjaar=2022&sort=prijs&order=asc

Response

{
  "total": 42,
  "count": 1,
  "campers": [
    {
      "Id": 1720224573,
      "ad_id": "buscamper-1720224573",
      "Merk": "Pössl",
      "Model": "P2 Relax",
      "Bouwjaar": "2022-06-15",
      "Kilometerstand": 17662,
      "Prijs": 77950,
      "BTW": null,
      "Type": null,
      "Slaapplaatsen": null,
      "Lengte": 599,
      "Gewicht (GVW)": null,
      "Motortype": null,
      "Motorvermogen": null,
      "Transmissie": "Automaat",
      "Chassis": null,
      "Sanitair": [],
      "Keuken": [],
      "Slaap": [],
      "Energie": [],
      "Rijcomfort": [],
      "Stabilisatie": [],
      "Awning": [],
      "TV/Entertainment": [],
      "Hoofdfoto": "https://buscamper.nl/wp-content/uploads/voorraad_campers/fotos/foto.php?f=stock.png&w=1200&h=400",
      "Omschrijving": "Fiat Ducato 3,5 t 2.3 MJ 160PK  AUTOMAAT9",
      "source_url": "https://buscamper.nl/voorraad_campers/possl-p2-relax-fi-781-38",
      "source_platform": "buscamper",
      "first_seen": "2026-05-25T13:02:28.003Z",
      "last_seen": "2026-05-25T13:04:13.606Z",
      "is_active": true,
      "price_history": [],
      "Analytics": 0,
      "Created_At": "2026-05-25T13:02:28.003Z",
      "Updated_At": "2026-05-25T13:04:13.606Z",
      "Dealer": "Buscamper Nederland"
    }
  ]
}
GET /campers/:id Camper detail + prijshistorie

Parameters

ParameterTypeOmschrijving
idnumberCamper ID (verplicht)

Voorbeeld

GET /campers/1720224573

Response

{
  "Id": 1720224573,
  "ad_id": "buscamper-1720224573",
  "Merk": "Pössl",
  "Model": "P2 Relax",
  "Bouwjaar": "2022-06-15",
  "Kilometerstand": 17662,
  "Prijs": 77950,
  "BTW": null,
  "Type": null,
  "Slaapplaatsen": null,
  "Lengte": 599,
  "Gewicht (GVW)": null,
  "Motortype": null,
  "Motorvermogen": null,
  "Transmissie": "Automaat",
  "Chassis": null,
  "Sanitair": [],
  "Keuken": [],
  "Slaap": [],
  "Energie": [],
  "Rijcomfort": [],
  "Stabilisatie": [],
  "Awning": [],
  "TV/Entertainment": [],
  "Hoofdfoto": "https://buscamper.nl/wp-content/uploads/voorraad_campers/fotos/foto.php?f=stock.png&w=1200&h=400",
  "Omschrijving": "Fiat Ducato 3,5 t 2.3 MJ 160PK  AUTOMAAT9",
  "source_url": "https://buscamper.nl/voorraad_campers/possl-p2-relax-fi-781-38",
  "source_platform": "buscamper",
  "first_seen": "2026-05-25T13:02:28.003Z",
  "last_seen": "2026-05-25T13:04:13.606Z",
  "is_active": true,
  "price_history": [],
  "Analytics": 0,
  "Created_At": "2026-05-25T13:02:28.003Z",
  "Updated_At": "2026-05-25T13:04:13.606Z",
  "Dealer": "Buscamper Nederland"
}
GET /merken Merken overzicht met campers per merk

Voorbeeld

GET /merken

Response

[
  { "id": 1, "naam": "Adria", "_count": { "campers": 12 } },
  { "id": 2, "naam": "Pössl", "_count": { "campers": 41 } }
]
GET /dealers Alle dealers met campers per dealer

Voorbeeld

GET /dealers

Response

[
  { "id": 1, "naam": "Henk Pen", "adres": "Dorpsstraat 12", "plaats": "Lelystad", "_count": { "campers": 0 } },
  { "id": 2, "naam": "Van de Vaart Campers", "adres": "Marktweg 34", "plaats": "Dronten", "_count": { "campers": 64 } },
  { "id": 3, "naam": "Buscamper Nederland", "adres": "Pascalweg 24", "plaats": "Culemborg", "_count": { "campers": 53 } }
]
GET /stats Database statistieken

Voorbeeld

GET /stats

Response

{
  "totaal": 53,
  "verkocht": 0,
  "gereserveerd": 0,
  "actief": 53,
  "gemiddeldePrijs": 98271.38,
  "merken": 2,
  "dealers": [{ "naam": "Buscamper", "campers": 53 }, { "naam": "Van de Vaart", "campers": 64 }],
  "laatsteUpdate": "2026-05-25T13:04:37.925Z"
}
POST /scrape Alle actieve dealers scrapen

Voorbeeld

POST /scrape

Response

{
  "resultaten": [
    { "bron": "buscamper", "totaal": 53, "nieuw": 0, "bijgewerkt": 53, "duurMs": 2795 },
    { "bron": "vdvaart", "totaal": 64, "nieuw": 64, "bijgewerkt": 0, "duurMs": 39767 }
  ]
}
POST /scrape/:bron Specifieke dealer scrapen

Parameters

ParameterTypeOmschrijving
bronstringDealernaam (URL-encoded)

Voorbeeld

POST /scrape/Buscamper%20Nederland

Response

{
  "bron": "buscamper",
  "totaal": 53,
  "nieuw": 53,
  "bijgewerkt": 0,
  "duurMs": 2883
}

Extra routes 13

MethodPathOmschrijving
GET/campers?zoek=Full-text zoek op merk, model, omschrijving
GET/campers/:id/prijsgeschiedenisPrijs historie van een camper
GET/merken/:idMerk detail + alle campers van dit merk
GET/modellenAlle modellen
GET/modellen/:idModel detail + campers
GET/typesAlle types/soorten
GET/types/:idType detail + campers
GET/dealers/:idDealer detail
GET/dealers/:id/campersCampers van een specifieke dealer
GET/opties[/:categorie]Optie definities, optioneel per categorie
GET/specsAlle spec keys
GET/scrape/statusScrape status per dealer (tijd + aantal)
POST/analyticsTrack view/click: {"camperId":1,"type":"VIEW"}

Database schema — children 8 tabellen

Camper (hoofdtabel)

idPK
adIdUnique
merkIdFK → Merk
modelIdFK → Model
typeIdFK → Type
dealerIdFK → Dealer

Merk

idPK
naamString (unique)
← campers1:N
← modellen1:N

Model

idPK
naamString
merkIdFK → Merk
← campers1:N

Type / Soort

idPK
naamString (unique)
← campers1:N

Dealer

idPK
naamString (unique)
adres / postcodeString
plaats / landString
website / scrapeUrlString
← campers1:N

Opties (M:M)

OptieDefinitiename + categorie
CamperOptiecamperId + optieId
Categorieënsanitair, keuken, slaap, energie, rijcomfort, stabilisatie, awning, tv

Afbeeldingen

CamperAfbeeldingurl + volgorde
isPrimaryBoolean
→ CamperN:1

Historie & Analytics

PrijsHistorieprijs + datum → Camper
Analyticstype + referrer → Camper

Camper status

ACTIEFTe koop, actief
VERKOCHTVerkocht
GERESERVEERDGereserveerd

Response velden 31

Basis

IdInt
ad_idString
MerkString?
ModelString?
TypeString?
BouwjaarDate
KilometerstandInt?
PrijsInt (euro)
BTWString?
SlaapplaatsenInt?
LengteInt? (cm)
Gewicht (GVW)Int? (kg)
MotortypeString?
MotorvermogenInt? (PK) ⚠️ deprecated — nooit gevuld
TransmissieString?
ChassisString? ⚠️ deprecated — nooit gevuld

Opties per categorie

SanitairString[]
KeukenString[]
SlaapString[]
EnergieString[]
RijcomfortString[]
StabilisatieString[]
AwningString[]
TV/EntertainmentString[]

Media & beschrijving

HoofdfotoString? (URL)
OmschrijvingString?

Bron & status

source_urlString?
source_platformString?
is_activeBoolean
DealerString?

Tijd & historie

first_seenDateTime
last_seenDateTime
Created_AtDateTime
Updated_AtDateTime
price_historyArray
AnalyticsInt (aantal)

Dealers 18

Buscamper Nederland

Campers-

Van de Vaart Campers

Campers-

Henk Pen

Campers-

Verheijen Campers

Campers-

Campergallery Apeldoorn

Campers-

Camper Centrum Wezep

Campers-

JMT Auto's & Campers

Campers-

Angelier Campers

Campers-

Broekhuis

Campers-

Bruggink

Campers-

Camper Exclusief

Campers-

Bakker Campers

Campers-

VDM-Campers

Campers-

RiKra Campers

Campers-

Meerbeek

Campers-

Wisselink

Campers-

Stam Campers

Campers-

Oortgiese

Campers-