Hee!
Ik kwam er dus achter dat Marktplaats een publieke API heeft, die JSON teruggeeft op basis van wat variabelen in de URL. Die API zit verstopt achter deze link:
https://www.marktplaats.nl/lrp/api/search?query=auto
Toen ben ik daar eens wat dieper in gedoken, en kwam ik terecht op allerlei info over RSS feeds, extra parameters en hoe je o.a. prijsinformatie uit die API kunt trekken. Zowel hier op Tweakers als via externe bronnen. Vanuit daar ben ik zelf aan de slag gegaan met bouwen — en uiteindelijk is daar mijn huidige systeem uit voortgekomen.
Afgelopen week kwam ik trouwens ook deze GitHub repo tegen:
👉
https://github.com/jensjeflensje/marktplaats-py
Die bevat vrij uitgebreide documentatie rondom die LRP API. En ik zag dat @
SgtElPotato ook iets soortgelijks had gedeeld deze ochtend. Verschillende routes, zelfde idee. Uiteindelijk heb ik uit dit soort dingen mijn info gefilterd en ben ik verder gaan bouwen. De website draait op ViteSSG/Node, dus lekker snel en lightweight.
Wel is het zo dat het systeem nu best wat resources vraagt — vooral omdat meer mensen uit mijn kring het zijn gaan gebruiken. Daarom zit er inmiddels ook een kleine betaalmodule in om het een beetje dekkend te houden.
Wat wél jammer is: die API van Marktplaats is super gelimiteerd. Live data ophalen werkt niet echt via de API — je krijgt alleen dingen als “Vandaag”, “Gisteren”, “Juni” etc. Geen exacte tijdstempels.
Als je dat wel wilt, moet je HTML scrapen. Daar gebruik ik Axios voor, en alleen voor PRO-gebruikers scrape ik ook de live timestamp uit de advertentiepagina’s. Voor de rest pakt hij gewoon data via de API.
Dat kost uiteraard weer meer resources, zeker als je bij elke run timestamps wil scrapen. Maar goed, dat is dus de afweging. Er zit hierachter ook een volledige redis-worker en queue situatie geïmplementeerd, zodat bij 100en alerts het alsnog gelijktijdig uitgevoerd kan worden of in een wachtrij dus wordt geplaatst.
Ik ben ook nog steeds aan het verbeteren hoor — het zou bijvoorbeeld tof zijn als hij bij het aanmaken van een alert niet meteen een mail stuurt met alle huidige resultaten, maar eerst een soort “baseline” vastlegt en vanaf daar pas begint met echte meldingen. Maar dat is technisch gezien nog even wat extra werk.
Mocht iemand er verder vragen over hebben (ik deel m’n code niet hoor 😅), dan hoor ik het uiteraard graag! /-\o