Noemt AI jouw bedrijf? Doe de gratis check
oddrank

De API van Oddrank

Haal je eigen metingen op in Power BI, Looker Studio of je eigen systeem. De API leest alleen: hij verandert niets en ziet alleen de metingen van je eigen account. Hij hoort bij een abonnement.

Een sleutel maken

Log in, ga naar Account en kies onder Koppelen met je eigen systemen een naam voor je sleutel, zoals Power BI. Dat kan de eigenaar van het account, en een beheerder als je team rollen heeft. Je ziet de sleutel één keer: kopieer hem meteen. Wij bewaren alleen een afdruk, dus kwijt is kwijt; maak dan een nieuwe. Je kunt er 10 tegelijk hebben, en elke sleutel daar weer intrekken. Een ingetrokken sleutel werkt meteen nergens meer.

Stuur de sleutel mee in een header, bij elk verzoek:

Authorization: Bearer odr_…

Nooit in de link. Een link belandt in logboeken, in de geschiedenis van je browser en in een gedeeld rapport. Staat er een sleutel in de link, dan weigert de API het verzoek: trek die sleutel dan in en maak een nieuwe.

De stand per site en markt

GET https://oddrank.nl/api/v1/stand
GET https://oddrank.nl/api/v1/stand?vorm=csv

Per site en per markt de nieuwste meting: de datum, de score met de marge, hoe vaak AI je noemt, de score per assistent (in JSON), en het verschil met de meting ervoor in dezelfde site en markt. Een markt is land en taal, zoals nl-nl of be-fr. Viel een meting helemaal uit, dan zijn de velden leeg in plaats van 0.

De CSV heeft de kolommen site, markt, datum, score, marge_laag, marge_hoog, aandeel_genoemd, vorige_datum, vorige_score, verschil.

Je metingen over een periode

GET https://oddrank.nl/api/v1/export?van=2026-09-01&tot=2026-11-30&tabel=vragen
GET https://oddrank.nl/api/v1/export?van=2026-09-01&tot=2026-11-30&vorm=json

Alle metingen van van tot en met tot, als CSV per tabel of alles samen als JSON. Dezelfde tabellen als de export in je dashboard, met de kolommen site en markt. Met site=jouwsite.nl alleen die site.

De tabellen: vragen, concurrenten, bronnen, verloop, producten, productvragen, winkels, advertentiekansen. Wat ze bevatten, staat in de uitleg bij de export voor Looker Studio. De tabellen over producten, winkels en advertenties zijn er alleen bij een meting waar die in zitten.

Rem en fouten

Hooguit 120 verzoeken per uur, voor al je sleutels samen, en daarvan hooguit 12 exports over een periode. Ruim genoeg om een rapport elk kwartier te verversen; de metingen zelf veranderen hooguit eens per week. Een nieuwe meting staat binnen 5 minuten in de stand.

  • 400: de sleutel staat in de link, of de periode klopt niet
  • 401: geen sleutel, of een sleutel die niet (meer) werkt
  • 403: het abonnement loopt niet
  • 404: geen meting in die periode, of een site die niet in je account staat
  • 429: de rem van je account is bereikt; probeer het over een uur weer
  • 503: bij ons gaat even iets mis

Een fout komt als JSON met een veld fout. Met taal=en staat de tekst in het Engels.

Voorbeeld: Power BI

In Power BI Desktop: Gegevens ophalen, Lege query, Geavanceerde editor, en plak dit. Vervang de sleutel door de jouwe. Bij het vernieuwen kies je anoniem als manier van aanmelden: de sleutel gaat al mee in de header.

let
    Bron = Csv.Document(
        Web.Contents("https://oddrank.nl/api/v1/stand", [
            Query = [vorm = "csv"],
            Headers = [Authorization = "Bearer odr_jouw-sleutel"]
        ]),
        [Delimiter = ",", Encoding = 65001]
    ),
    Tabel = Table.PromoteHeaders(Bron)
in
    Tabel

Voorbeeld: Looker Studio

Looker Studio kan zelf geen header meesturen bij een CSV-adres. Daarom gaat het via Google Sheets: een klein script haalt de CSV met de sleutel in de header op en zet hem in een blad, en Looker Studio leest dat blad.

  1. Open een nieuw Google Sheet en kies Extensies, Apps Script.
  2. Zet onder Projectinstellingen, Scripteigenschappen, een eigenschap ODDRANK_SLEUTEL met je sleutel als waarde.
  3. Plak het script hieronder en voer haalOddrank één keer uit.
  4. Zet onder Triggers een trigger op tijd, bijvoorbeeld elke dag.
  5. Kies in Looker Studio Google Spreadsheets als gegevensbron en dan het blad Oddrank.
function haalOddrank() {
  // De sleutel staat in de scripteigenschappen, niet in het blad.
  const sleutel = PropertiesService.getScriptProperties().getProperty("ODDRANK_SLEUTEL");
  const tot = new Date();
  const van = new Date(tot.getTime() - 365 * 24 * 3600 * 1000);
  const dag = (d) => Utilities.formatDate(d, "UTC", "yyyy-MM-dd");
  const url = "https://oddrank.nl/api/v1/export?vorm=csv&tabel=vragen&van=" + dag(van) + "&tot=" + dag(tot);
  const antwoord = UrlFetchApp.fetch(url, { headers: { Authorization: "Bearer " + sleutel } });
  const rijen = Utilities.parseCsv(antwoord.getContentText().replace(/^\uFEFF/, ""));
  const blad = SpreadsheetApp.getActive().getSheetByName("Oddrank") || SpreadsheetApp.getActive().insertSheet("Oddrank");
  blad.clearContents();
  blad.getRange(1, 1, rijen.length, rijen[0].length).setValues(rijen);
}

Seintjes in Slack of Teams

Onder Account, Koppelen met je eigen systemen, plak je het adres van een inkomende webhook. Dan krijg je dezelfde seintjes als op je telefoon in dat kanaal: hooguit één per dag, nooit 's nachts, zonder namen of adressen. Met de knop stuur je een testbericht.

  • Slack: maak een app met Incoming Webhooks en kies het kanaal. Het adres begint met https://hooks.slack.com/.
  • Microsoft Teams: kies bij het kanaal Workflows en de workflow die een bericht plaatst als er een webhookverzoek binnenkomt. Kopieer het adres dat de workflow geeft. Ook een flow in Power Automate met zo'n adres werkt.

Een adres van een ander domein nemen we niet aan. Meer over beveiliging