Hoe het werkt

Alles wat de website kan, per modus — voor mensen én voor je coding-agent. Kies links waar je mee werkt.

Voor mensen

zoeken op de website

De standaardmodus: typ wat je zoekt in gewone woorden en krijg advertenties en veilingkavels terug.

  1. Typ in de zoekbalk, bijvoorbeeld:
    gezellige fauteuil voor onder de €100
  2. Verfijn met Filters: bron (Tweedehands, Veiling of Kringloop), minimum- en maximumprijs, en postcode met straal voor dingen in de buurt.
  3. Tip: klik op het foto-icoontje om met een afbeelding te zoeken in plaats van woorden.
  4. Wissel tussen Resultaten (lijst) en Kaarten, en blader met Vorige en Volgende.
  5. Zie je iets interessants? Klik erop — de advertentie opent in een nieuw tabblad. Met vergelijkbaar bij een resultaat vind je meer van hetzelfde. Klik op het bladwijzer-icoontje om een koopje te bewaren (account nodig) — alles terug te vinden onder Bewaard bovenaan de resultaten.
Voor je coding-agent
GET

/v1/search

Semantisch + keyword zoeken over de hele index. Auth: Authorization: Bearer kk_…. Limiet (Gratis): 60/minuut, 100/dag — meer via Abonnement.

ParameterUitleg
q *Zoekopdracht (Nederlands werkt het best)
sourceexacte site (2dehands, trader, marktplaats, zoekertjes, troc, thinktwice, strieppromo, kringwinkel, veilinghuis zoals vavato) of bucket (tweedehands, veiling, kringloop)
listing_typetweedehands, veiling of kringloop (herhaalbaar)
typeauto, neural of keyword
price_min / price_maxEuro's
no_price0 verbergt advertenties zonder prijs
limitstandaard 24; keyword max 100, neural/auto max 50
Shell

Verdieping nodig? GET /v1/similar?url=… vindt gelijkende advertenties, GET /v1/contents?urls=… (max 20) haalt volledige details op. Volledige referentie: API-referentie.

Voor mensen

agent op de website

Kies de modus Agent (slotje: hiervoor heb je een gratis account nodig). De agent zoekt niet één keer, maar werkt je vraag stap voor stap af — en je ziet live wat hij doet.

zoek een complete racefiets-uitzet voor een beginner, maximaal €500 in totaal
  1. Stel je vraag en kijk mee terwijl de agent meerdere zoekslagen uitvoert.
  2. Vraag gerust door in hetzelfde gesprek — hij onthoudt waar jullie het over hadden.
  3. Klaar voor iets nieuws? Klik op Gesprek wissen en begin opnieuw.
Voor je coding-agent
POST

/v1/agent

streaming

De website-agent als API: hij voert zelf meerdere zoekslagen uit en stuurt het antwoord als Server-Sent Events stream. Stuur JSON met message (verplicht), plus conversation (lijst met eerdere berichten voor vervolgvragen), source (exacte site of veilinghuis), listing_type (tweedehands, veiling, kringloop) en/of category (een van de 27 slugs). Limiet (Gratis): 10/minuut, 10/dag — meer via Abonnement.

Shell
curl -N -X POST "https://koopje.ai/v1/agent" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $KOOPJE_API_KEY" \
  -d '{"message": "zoek een racefiets voor een beginner, max 500 euro"}'

Liever zelf de keten bouwen? Combineer /v1/search → /v1/contents — precies wat onze skill doet (Eigen AI koppelen).

Stap 1

Haal je persoonlijke API key op

Je assistent heeft een API key nodig om namens jou te mogen zoeken. Zo haal je hem:

  1. Maak een gratis account en log in.
  2. Open Mijn profiel → MCP & API keys → Nieuwe sleutel.
  3. Kopieer de code (begint met kk_…). Je ziet hem maar één keer, dus bewaar hem meteen.

Gratis en fair use: normaal zoeken kan volop, de uitgebreide AI-antwoorden maximaal een paar keer per minuut. Kom je eroverheen, dan zegt hij dat er gewoon bij — er gaat niets stuk.


Stap 2

Kies je assistent

OpenClaw of Hermes

Gebruik je OpenClaw of Hermes? Dan is één bericht genoeg. Kopieer onderstaande tekst, plak hem in je assistent en druk op enter. Hij installeert alles zelf, vraagt om je API key en test de verbinding.

Installeer de koopje.ai-zoekskill, zodat je tweedehands advertenties en veilingkavels in België kunt doorzoeken.

1. Download https://koopje.ai/skill/koopje-search/SKILL.md en https://koopje.ai/skill/koopje-search/references/api.md
2. Bewaar ze als een skill met het API-referentiebestand in een references-submap, op de standaard skills-locatie van je platform (OpenClaw: ~/.openclaw/workspace/skills/koopje-search/ — Hermes: ~/.hermes/skills/web/koopje-search/).
3. Vraag me om mijn KOOPJE_API_KEY (begint met kk_) als je die nog niet hebt, en test de verbinding met GET https://koopje.ai/v1/stats en header Authorization: Bearer <mijn API key>.
4. Bevestig in één zin wat je installeerde en hoeveel er te doorzoeken valt (total uit /v1/stats).
Liever zelf installeren via de terminal?
mkdir -p ~/.openclaw/workspace/skills/koopje-search/references
curl -s -o ~/.openclaw/workspace/skills/koopje-search/SKILL.md \
  https://koopje.ai/skill/koopje-search/SKILL.md
curl -s -o ~/.openclaw/workspace/skills/koopje-search/references/api.md \
  https://koopje.ai/skill/koopje-search/references/api.md
export KOOPJE_API_KEY="kk_plak_hier_je_key"
mkdir -p ~/.hermes/skills/web/koopje-search/references
curl -s -o ~/.hermes/skills/web/koopje-search/SKILL.md \
  https://koopje.ai/skill/koopje-search/SKILL.md
curl -s -o ~/.hermes/skills/web/koopje-search/references/api.md \
  https://koopje.ai/skill/koopje-search/references/api.md
export KOOPJE_API_KEY="kk_plak_hier_je_key"

Liever directe tools? Beide spreken MCP (zelfde API key). OpenClaw: Control UI → Settings → MCP → Add server (naam koopje, Streamable HTTP, URL https://koopje.ai/mcp), of in config:

{
  mcp: {
    servers: {
      koopje: {
        url: "https://koopje.ai/mcp",
        transport: "streamable-http",
        headers: { Authorization: "Bearer kk_plak_hier_je_key" }
      }
    }
  }
}

Hermes: in ~/.hermes/config.yaml:

mcp_servers:
  koopje:
    url: "https://koopje.ai/mcp"
    headers:
      Authorization: "Bearer kk_plak_hier_je_key"

Check met hermes mcp test koopje.

Claude

Geen technische kennis nodig: kopieer onderstaand bericht, plak het in Claude en druk op enter. Hij installeert alles zelf, vraagt om je API key en test de verbinding.

Installeer de koopje.ai-zoekskill, zodat je tweedehands advertenties en veilingkavels in België kunt doorzoeken.

1. Download https://koopje.ai/skill/koopje-search/SKILL.md en https://koopje.ai/skill/koopje-search/references/api.md
2. Bewaar ze als een skill met het API-referentiebestand in een references-submap, op je standaard skills-locatie (~/.claude/skills/koopje-search/).
3. Vraag me om mijn KOOPJE_API_KEY (begint met kk_) als je die nog niet hebt, en test de verbinding met GET https://koopje.ai/v1/stats en header Authorization: Bearer <mijn API key>.
4. Bevestig in één zin wat je installeerde en hoeveel er te doorzoeken valt (total uit /v1/stats).
Liever zelf installeren via de terminal?
mkdir -p ~/.claude/skills/koopje-search/references
curl -s -o ~/.claude/skills/koopje-search/SKILL.md \
  https://koopje.ai/skill/koopje-search/SKILL.md
curl -s -o ~/.claude/skills/koopje-search/references/api.md \
  https://koopje.ai/skill/koopje-search/references/api.md
export KOOPJE_API_KEY="kk_plak_hier_je_key"
Liever directe tools via MCP?

Onze hosted MCP-server op https://koopje.ai/mcp — zelfde API key, zelfde quota. In de terminal:

claude mcp add --transport http koopje https://koopje.ai/mcp \
  --header "Authorization: Bearer kk_plak_hier_je_key"

Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "koopje": {
      "type": "http",
      "url": "https://koopje.ai/mcp",
      "headers": { "Authorization": "Bearer kk_plak_hier_je_key" }
    }
  }
}

Codex

Snelste weg: directe tools via onze hosted MCP-server (één commando in de terminal):

export KOOPJE_API_KEY="kk_plak_hier_je_key"
codex mcp add koopje --url https://koopje.ai/mcp --bearer-token-env-var=KOOPJE_API_KEY

Alternatief, via een skill — kopieer onderstaand bericht, plak het in Codex en druk op enter. Hij installeert alles zelf, vraagt om je API key en test de verbinding.

Installeer de koopje.ai-zoekskill, zodat je tweedehands advertenties en veilingkavels in België kunt doorzoeken.

1. Download https://koopje.ai/skill/koopje-search/SKILL.md en https://koopje.ai/skill/koopje-search/references/api.md
2. Bewaar ze als een skill met het API-referentiebestand in een references-submap, op je standaard skills-locatie.
3. Vraag me om mijn KOOPJE_API_KEY (begint met kk_) als je die nog niet hebt, en test de verbinding met GET https://koopje.ai/v1/stats en header Authorization: Bearer <mijn API key>.
4. Bevestig in één zin wat je installeerde en hoeveel er te doorzoeken valt (total uit /v1/stats).

ChatGPT

Plus of hoger nodig, geen technische kennis. Zet Developer Mode aan (Instellingen → Connectors → Advanced) en maak een custom connector:

  1. Naam: koopje, URL: https://koopje.ai/mcp.
  2. Token-authenticatie: plak je API key (maak hem aan via de API-referentie).
  3. Schakel hem per chat in via + → More → Developer Mode → Add sources — daarna zoeken met gewone zinnen, bv. “zoek een e-bike onder €800 in Gent”.

Gemini

Via de Gemini CLI — zet dit in ~/.gemini/settings.json (vervang de key):

{
  "mcpServers": {
    "koopje": {
      "httpUrl": "https://koopje.ai/mcp",
      "headers": { "Authorization": "Bearer kk_plak_hier_je_key" }
    }
  }
}

Cursor, VS Code, OpenCode en overige MCP-clients: zelfde JSON, maar met url i.p.v. httpUrl (details op /api).

n8n

Draai je eigen n8n? Importeer onze kant-en-klare koopjesagent: een AI-agent met twee koopje.ai-tools (zoeken en details ophalen). Eén keer je API key koppelen en chatten maar.

  1. Open onze kant-en-klare template op n8n.io en klik Use workflow.
  2. In n8n: Workflows → ⋯ → Import from clipboard en plak de workflow.
  3. Maak in n8n een Bearer Auth-credential: Credentials → New → Bearer Auth, en plak je kk_…-key uit stap 1 als Token.
  4. Open de twee tool-nodes (Zoek koopjes en Haal details op) en selecteer de credential bij Credential to connect with. Je key staat nergens in de workflow zelf.
  5. Open OpenRouter Chat Model en selecteer je model-credential — OpenRouter heeft gratis modellen om mee te beginnen.
  6. Open de chat in n8n en stel je vraag, bijvoorbeeld: “zoek een tweedehands e-bike onder €800 in Gent”.

De agent onthoudt het gesprek via Simple Memory — doorvragen in dezelfde chat kan dus gewoon.


Stap 3

Stel een proefvraag

Is alles gelukt? Stel je assistent dan bijvoorbeeld deze vraag:

zoek een tweedehands e-bike onder €800 in Gent

Krijg je advertenties terug met een prijs, een plaats en een link? Dan werkt alles. Vraag daarna gerust door — je assistent onthoudt het gesprek.

Voor je coding-agent
POST

/mcp

Streamable HTTP

Dezelfde index als de REST API, maar als hosted MCP-server (JSON-RPC 2.0 over Streamable HTTP) — voor Claude, Cursor, ChatGPT, Codex, Gemini en elke andere MCP-client. Auth met dezelfde Bearer kk_… key als de REST API; zelfde limieten en quota. Zonder key werkt het ook — dan gelden de gratis-limieten per IP-adres (zo werkt de ChatGPT-directory).

Koppel https://koopje.ai/mcp met je API key en je assistent zoekt zelf.

Stap-voor-stap per assistent (ChatGPT, Claude, Codex, Gemini, OpenClaw/Hermes, n8n) staat in Eigen AI koppelen.

Tools

toolwat het doet
search_listingsSemantisch zoeken — dezelfde parameters als GET /v1/search. Het antwoord bevat een price_context-blok (n · mediaan · midden-50%; excl. gratis, accessoires en veilingkavels) zodra er genoeg vergelijkbare vraagprijzen zijn.
find_similarGelijkaardige koopjes bij een listing — als GET /v1/similar.
get_listingVolledige details van één of meer listings — als GET /v1/contents.
corpus_statsIndexstatistieken — als GET /v1/stats.

Config per client

Generieke config (werkt voor Cursor, VS Code, OpenCode en de meeste MCP-clients — ~/.cursor/mcp.json):

JSON
{
  "mcpServers": {
    "koopje": {
      "url": "https://koopje.ai/mcp",
      "headers": { "Authorization": "Bearer kk_..." }
    }
  }
}

Of test de server direct met curl — eerst de handshake, dan een zoekopdracht:

Shell
curl -X POST "https://koopje.ai/mcp" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer kk_..." \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18"}}'

curl -X POST "https://koopje.ai/mcp" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer kk_..." \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"search_listings","arguments":{"q":"racefiets","limit":5}}}'

Limieten

Identiek aan de REST API per key (Gratis): search, similar, contents en stats 60/minuut + 100/dag; de agent-tool 10/minuut + 10/dag. Hogere limieten via Abonnement. Zonder key: dezelfde gratis-limieten, gerekend per IP-adres. Zelfde foutcodes — zie API-referentie.

Authenticatie

Elke aanvraag naar /v1/* vereist een Bearer token. Maak een API key via de zijbalk (MCP & API keys, na aanmelden) en stuur die als header mee.

curl "https://koopje.ai/v1/search?q=fiets&limit=5" \
  -H "Authorization: Bearer kk_a1b2c3d4..."

Formaat: API keys beginnen altijd met kk_ gevolgd door 32 willekeurige tekens. Ze zijn eenmalig zichtbaar bij het aanmaken — bewaar ze veilig.

Gelijkaardige koopjes

GET /v1/similar

Vind koopjes die semantisch lijken op een bestaande listing.

Parameters

urlstringjaURL van een koopje in onze index.
limitnumbernee1 – 24 (default 12).

Voorbeeld

curl "https://koopje.ai/v1/similar?url=https%3A%2F%2Fwww.2dehands.be%2Fv%2F..." \
  -H "Authorization: Bearer kk_..."

Agent

POST /v1/agent

De website-agent als API: voert zelf meerdere zoekslagen uit en streamt het antwoord als Server-Sent Events (einde via connection close). Limiet (Gratis): 10/min + 10/dag per API key — meer via Abonnement.

Parameters (JSON-body)

messagestringjaJe vraag in gewone woorden.
conversationarrayneeEerdere berichten als [{role, content}] voor vervolgvragen.
sourcestringneeExacte site of veilinghuis (zie /v1/search).
listing_typestringneetweedehands · veiling · kringloop.
categorystringneeEen van de 27 categorie-slugs; de agent gebruikt hem bij elke zoekstap.

Voorbeeld

curl -N -X POST "https://koopje.ai/v1/agent" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer kk_..." \
  -d '{"message": "zoek een racefiets voor een beginner, max 500 euro"}'

Inhoud ophalen

GET /v1/contents

Haal volledige records op van specifieke koopjes (met beschrijving, locatie, eindtijd, etc.).

Parameters

idsstringjaKomma-gescheiden URLs (max 20).
similarintneeVoeg N gelijkaardige koopjes per resultaat toe (max 12, standaard 0).

Stats

GET /v1/stats

Indexstatistieken — totaal aantal koopjes + per bron.

Voorbeeld

curl "https://koopje.ai/v1/stats" \
  -H "Authorization: Bearer kk_..."

Bewaard

GET /v1/saved

Alle bewaarde listings van de gebruiker, nieuwste eerst. Bewaren via POST /v1/saved met {"url": …} plus snapshot-velden (title, price_value, price_text, thumbnail_url, source, location); verwijderen via POST /v1/saved/remove met {"url": …}.

Voorbeeld

curl -X POST "https://koopje.ai/v1/saved" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer kk_..." \
  -d '{"url": "https://www.2dehands.be/v/…", "title": "Racefiets", "price_text": "€350"}'

Fouten

De API gebruikt gewone HTTP-statuscodes en een JSON-body met {"error": "..."}.

codebetekenis
401Geen of ongeldige Bearer token.
403Token is ingetrokken.
400Ongeldige parameters.
429Te veel aanvragen — search/similar/contents/stats: 60/min + 100/dag (Gratis) per API key; agent: 10/min + 10/dag. Hogere limieten via Abonnement. Probeer later opnieuw.
500Interne fout — probeer opnieuw of mail ons.

Versiebeleid

/v1/ is stabiel: bestaande velden verdwijnen niet en bestaande limieten gaan niet omlaag zonder aankondiging. Nieuwe velden en endpoints kunnen zonder versiesprong bijkomen — controleer daarom nooit op exacte responses, alleen op de velden die je gebruikt.

Elke /v1/-respons draagt RateLimit-Limit, RateLimit-Remaining en RateLimit-Reset (seconden), plus RateLimit-Policy met de per-minute- en per-day-buckets. Antwoorden met 429 hebben bovendien Retry-After — wacht dat aantal seconden en probeer opnieuw.

Breaking changes komen als /v2/ met minimaal 6 maanden overlap, aangekondigd op deze pagina en per mail naar API-gebruikers.


Verder op de site

Onder Bronnen zie je welke tweedehands sites en veilinghuizen worden doorzocht. Na aanmelden vind je je API keys in de zijbalk onder MCP & API keys. Iets geks gezien? Gebruik de feedbackbalk onderaan de pagina — die lezen we echt.