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
skipnochtake. 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;jobAdIdallein 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.
applyStartsist 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-Agentsenden. 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-Agentist im Konnektor gesetzt und enthält den Kundennamen.- Der Import unterscheidet die beiden Antwortformate (Umschlag vs. Array).
- Zeilen werden über Tag +
jobAdId+channelgeschlüsselt. - Ein gleitendes Nachladefenster ist eingerichtet, damit Nachverdichtungen ankommen.
isFaultywird ausgewertet, statt blind aufdatazuzugreifen.
