Integrationsguide für Drittsysteme

Auswertungen zu Stellenanzeigen und Kampagnen

Überblick

Diese Seite richtet sich an alle Systeme, die Kennzahlen aus talent.Flow nur lesen: Excel, BI-Werkzeuge wie Power BI oder Tableau, und selbst gebaute Auswertungen. Der Zugriff ist rein lesend — es werden keine Daten verändert.

Kurzfassung: Für den regelmäßigen Bericht über alle Anzeigen ist GET /v3/reports/performance/jobs der richtige Endpunkt — er liefert tagesgenaue Zeilen je Kanal inklusive Kampagnenname und Kosten. Die beiden Statistik-Endpunkte darunter sind für den Blick auf eine einzelne Anzeige gedacht.

Organisch oder Performance?

Es gibt zwei Statistikarten, und sie unterscheiden sich in genau einer Kennzahl:

Klicks Bewerbungen Kosten
Organische Statistik
Performance-Statistik

Beide sind je Tag und je Kanal aufgeschlüsselt. Wer Ausgaben auswerten will, braucht die Performance-Statistik — in der organischen Statistik gibt es kein Kostenfeld.

Die drei Zugänge

1. Monatsbericht über alle Anzeigen

Der ergiebigste Endpunkt: er liefert tagesgenaue Zeilen für einen ganzen Monat, über alle Anzeigen hinweg.

curl -X GET "https://api.talent360.io/v3/reports/performance/jobs?year=2026&month=7" \
  -H "Authorization: Bearer IHR_ACCESS_TOKEN" \
  -H "User-Agent: Mozilla/5.0 (Kundenname)" \
  -H "Accept: application/json"

Endpunkt: GET /v3/reports/performance/jobs

Eine Zeile je Tag, Anzeige und Kanal:

Feld Bedeutung
day Tag
jobAdId Id der Stellenanzeige
referenceId Referenz-Id des Kunden
workingTitle Berufsbezeichnung der Bundesagentur für Arbeit
dkzId Id der Bundesagentur für Arbeit
channel Kanal
campaignNames Namen der Kampagne (Liste)
campaignKeywords Kampagnenschlagworte (Liste)
costs Kosten
clicks Klicks
applies Bewerbungen
applyStarts Gestartete Bewerbungen — nur beim Kanal Indeed befüllt

Trotz des Namens „pro Monat" sind die Daten tagesgenau. year und month grenzen den Zeitraum ein, die Antwort enthält dann eine Zeile je Tag, Anzeige und Kanal. Für eine Jahresauswertung rufen Sie den Endpunkt zwölfmal auf.

2. Eine einzelne Anzeige über einen Zeitraum

curl -X GET "https://api.talent360.io/v3/jobads/4711/statistics/performance?startDate=2026-07-01&endDate=2026-07-31" \
  -H "Authorization: Bearer IHR_ACCESS_TOKEN" \
  -H "User-Agent: Mozilla/5.0 (Kundenname)" \
  -H "Accept: application/json"
Zweck Endpunkt
Organische Statistik einer Anzeige GET /v3/jobads/{id}/statistics/organic
Performance-Statistik einer Anzeige GET /v3/jobads/{id}/statistics/performance

startDate und endDate sind optional und haben das Format YYYY-MM-DD; ohne Angabe liefert der Endpunkt den gesamten verfügbaren Zeitraum.

3. Alle Anzeigen zu einem Stichtag

curl -X GET https://api.talent360.io/v3/jobads/statistics/performance/2026-07-30 \
  -H "Authorization: Bearer IHR_ACCESS_TOKEN" \
  -H "User-Agent: Mozilla/5.0 (Kundenname)"
Zweck Endpunkt
Organische Statistik zum Stichtag GET /v3/jobads/statistics/organic/{date}
Performance-Statistik zum Stichtag GET /v3/jobads/statistics/performance/{date}

Nützlich für einen täglichen Abzug, der stets nur den Vortag nachlädt.

Achtung: zwei verschiedene Antwortformate

Nicht alle Endpunkte antworten gleich. Die Statistik-Endpunkte unter /jobads/… liefern einen Umschlag, die Nutzdaten liegen darin unter data. /reports/performance/jobs liefert dagegen ein nacktes Array. Wer beide Quellen in dieselbe Pipeline hängt, braucht zwei Parser.

Umschlag (/jobads/…/statistics/…):

{
  "isFaulty": false,
  "data": [
    { "jobAdId": "…", "date": "2026-07-30", "channel": "Indeed", "clicks": 128, "cost": 42.5, "applies": 6 }
  ],
  "message": null,
  "validationErrors": [],
  "serviceAlerts": [],
  "statusCode": 200,
  "messageGuid": "…"
}

Nacktes Array (/reports/performance/jobs):

[
  { "day": "2026-07-30", "jobAdId": 4711, "channel": "Indeed", "campaignNames": ["Sommerkampagne"], "costs": 42.5, "clicks": 128, "applies": 6, "applyStarts": 9 }
]

Prüfen Sie beim Umschlag immer isFaulty, bevor Sie data auswerten — und protokollieren Sie messageGuid mit. Bei einer Supportanfrage lässt sich der Aufruf darüber eindeutig zuordnen.

Die Anzeigen dazu

Kennzahlen allein reichen selten — für Titel, Laufzeit und Zuordnung:

Zweck Endpunkt
Alle Anzeigen auflisten GET /v3/jobads
Eine Anzeige im Detail GET /v3/jobads/{jobAdId}
Geänderte Anzeigen im Zeitraum GET /v3/jobads/changes
Geänderte Anzeigen pro Tag GET /v3/jobads/changes/{date}
Geänderte Anzeigen pro Stunde GET /v3/jobads/changes/{date}/{hour}
Anfragen-Report (Vertriebsseite) GET /v3/reports/customerrequests/performance

Empfehlungen

  • Kein Paging vorhanden. Die Endpunkte kennen weder skip noch take. Grenzen Sie stattdessen über Zeiträume ein — ein Monat je Aufruf ist eine gute Größe.
  • Schlüssel für den Import: Tag + jobAdId + channel. Erst diese Kombination ist eindeutig; jobAdId allein liefert mehrere Zeilen pro Tag.
  • Nicht rückwirkend als unveränderlich behandeln. Kennzahlen der letzten Tage können sich noch nachverdichten. Laden Sie ein gleitendes Fenster von einigen Tagen erneut, statt nur den Vortag.
  • applyStarts ist kanalabhängig und nur bei Indeed befüllt — in einer Summenbildung über alle Kanäle führt das Feld sonst in die Irre.
  • Ein Access Token pro Tag, nicht pro Abfrage (siehe Authentifizierung). Gerade BI-Werkzeuge mit vielen parallelen Abfragen laufen sonst in das Token-Kontingent.
  • Auch Excel und BI-Tools müssen einen User-Agent senden. Viele Konnektoren tun das nicht von selbst — der Header ist im Verbindungsschritt zu hinterlegen.

Checkliste

  • Zugriff läuft über einen zwischengespeicherten Access Token, nicht über einen Token je Abfrage.
  • User-Agent ist im Konnektor gesetzt und enthält den Kundennamen.
  • Der Import unterscheidet die beiden Antwortformate (Umschlag vs. Array).
  • Zeilen werden über Tag + jobAdId + channel geschlüsselt.
  • Ein gleitendes Nachladefenster ist eingerichtet, damit Nachverdichtungen ankommen.
  • isFaulty wird ausgewertet, statt blind auf data zuzugreifen.